¿Se puede almacenar un archivo.BMP en una HTA(HTML/VBScript)?
base64 (5)
La imagen del lado izquierdo se llama favicon y su tamaño predeterminado es 16x16 y debe estar en formato .ICO (pero también puede estar en otro).
Cuando escribiste sobre ocultar una imagen .BMP, supongo que querías almacenar y no ocultar el favicon, por lo que siempre se cargaba, incluso si los marcadores / el usuario está fuera de línea. ¿Derecha?
Me he dado cuenta en una copia de seguridad de mis marcadores FireFox que el icono que se muestra a la izquierda de cada entrada se mantiene como una secuencia de caracteres en las etiquetas A. Por ejemplo:
ICON = "data: image / png; base64, iVBOR [datos eliminados para acortar el ejemplo] rkJggg =="
Tengo 3 archivos BMP (2 are 4x20 (249 bytes) and 1 is 102x82 (24.7 KB))
que me gustaría esconder dentro de mi aplicación HTML para que no se pierdan.
El más grande aparece 3 veces en la etiqueta de estilo de la siguiente manera (se muestra 1 aparición):
<style type="text/css">
#frmMainBody
{background:grey; background-image:url(''Background.bmp''); margin:0;
padding:0; font:normal 10pt Microsoft Sans Serif;}
</style>
Los otros dos aparecen en una subrutina de VBScript de la siguiente manera:
Sub Button_Glow
'' Highlights a button when the cursor hovers over it.
With Window.Event.srcElement.Style
If .BackgroundColor <> "Lavender" Then
.BackgroundColor = "Lavender"
.BackgroundImage = "url(Glow.bmp)"
.BackgroundPositionY = -2
.BackgroundRepeat = "Repeat-X"
End If
End With
End Sub ''Button_Glow
Es posible ?
No soy bueno con vb, pero puedes codificar un archivo o imagen en base64 (en PHP con la función base64_encode ()) debería haber una función en vb para eso. Todo lo que tiene que hacer es guardar el contenido o las cadenas en el archivo de imagen (por ejemplo, XXXXXX.png) como variable y pasarlo a la función de codificación base64.
También puede usar este método para guardar imágenes directamente en la base de datos (supongo ...) pero deberá decodificar la cadena para hacer que la imagen aparezca (suponiendo que esté haciendo esto). No intente esto en casa. podría matar a tu gato y quemar tu casa: /
http://www.techerator.com/2011/12/how-to-embed-images-directly-into-your-html/ podría ser un recurso relevante para usted
HTA es un lenguaje de marcado editable de texto plano que puede abrir y editar con cualquier editor de texto plano como Notepad ++.
PUEDE almacenar CUALQUIER formato de imagen en HTML, CSS, etc. convirtiendo la imagen a base64, luego en lugar de
<img src="mypath/myimage.bmp" />
<style type="text/css">
foo { background: url(mypath/myimage.bmp); }
</style>
Usted pondría ::
<img src="data:image/x-png;base64,iVBORw0KGgoAAAANS....." />
<style type="text/css">
foo { background: url(data:image/x-png;base64,iVBORw0KGgoAAAANS.....); }
</style>
Para que esto sea aún más fácil para usted, puede convertir la imagen en este formato usando una herramienta en línea como la que se encuentra aquí >> Convertir cualquier imagen en una cadena Base64 <<.
CÓMO APLICAR ESTO AL CÓDIGO EN TU PREGUNTA
Usando una de las herramientas (o escribiendo la suya), ubique y convierta ''Background.bmp'' a base64, luego modifique el primer bloque de código publicado de esta manera (también abreviado para ahorrar espacio)
<style type="text/css">
#frmMainBody
{background:grey; background-image:url(data:image/x-png;base64,iVBORw0KGgoAAAANS....); margin:0;
padding:0; font:normal 10pt Microsoft Sans Serif;}
</style>
A continuación, para el código de VBScript, busque y convierta ''Glow.bmp'' (igual que lo hizo para ''Background.bmp'' arriba) y modifique el bloque de código para que se vea así.
Sub Button_Glow
'' Highlights a button when the cursor hovers over it.
With Window.Event.srcElement.Style
If .BackgroundColor <> "Lavender" Then
.BackgroundColor = "Lavender"
.BackgroundImage = "data:image/x-png;base64,iVBORw0KGgoAAAANS....."
.BackgroundPositionY = -2
.BackgroundRepeat = "Repeat-X"
End If
End With
End Sub
Esto puede ser útil: un HTA que usa VBScript para codificar el archivo de imagen como base64 (con código adaptado de Base64 Encode String en VBScript y VBScript para abrir un cuadro de diálogo y seleccionar una ruta de archivo ).
Puede generar el código base64 y usarlo como fuente de una imagen, por ejemplo:
<img src="data:image/png;base64, [base64 code inserted here] ">
<!DOCTYPE html>
<html>
<head>
<HTA:APPLICATION
ID="oHta"
APPLICATIONNAME="Base64 Encode"
ICON="favicon.ico"
/>
<LINK id=shortcutlink REL="SHORTCUT ICON" HREF="favicon.ico">
<META http-equiv="x-ua-compatible" content="text/html; charset=utf-8">
<TITLE>Base64 Encoder</TITLE>
</head>
<script language=vbscript>
Function fBase64Encode(sourceStr)
Dim rarr()
carr = Array( "A", "B", "C", "D", "E", "F", "G", "H", _
"I", "J", "K", "L", "M", "N", "O" ,"P", _
"Q", "R", "S", "T", "U", "V", "W", "X", _
"Y", "Z", "a", "b", "c", "d", "e", "f", _
"g", "h", "i", "j", "k", "l", "m", "n", _
"o", "p", "q", "r", "s", "t", "u", "v", _
"w", "x", "y", "z", "0", "1", "2", "3", _
"4", "5", "6", "7", "8", "9", "+", "/")
n = Len(sourceStr)-1
ReDim rarr(n/3)
For i=0 To n Step 3
a = Asc(Mid(sourceStr,i+1,1))
If i < n Then
b = Asc(Mid(sourceStr,i+2,1))
Else
b = 0
End If
If i < n-1 Then
c = Asc(Mid(sourceStr,i+3,1))
Else
c = 0
End If
rarr(i/3) = carr(a/4) & carr((a And 3) * 16 + b/16) & carr((b And 15) * 4 + c/64) & carr(c And 63)
Next
i = UBound(rarr)
If n Mod 3 = 0 Then
rarr(i) = Left(rarr(i),2) & "=="
ElseIf n Mod 3 = 1 Then
rarr(i) = Left(rarr(i),3) & "="
End If
fBase64Encode = Join(rarr,"")
End Function
''-------------------------------------------------------------------------------
function fBase64Decode(str)
fBase64Decode = ""
table = fGenerateBase64Table
bits = 0
for x = 1 to len(str) step 1
c = table(1+asc(mid(str,x,1)))
if (c <> -1) then
if (bits = 0) then
outword = c*4
bits = 6
elseif (bits = 2) then
outword = c+outword
strBase64 = strBase64 & chr(clng("&H" & hex(outword mod 256)))
bits = 0
elseif (bits = 4) then
outword = outword + int(c/4)
strBase64 = strBase64 & chr(clng("&H" & hex(outword mod 256)))
outword = c*64
bits = 2
else
outword = outword + int(c/16)
strBase64 = strBase64 & chr(clng("&H" & hex(outword mod 256)))
outword = c*16
bits = 4
end if
end if
next
fBase64Decode = strBase64
end function
''---------------------------------------------------
function fGenerateBase64Table()
r64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
''set up decode table
dim table(256)
for x = 1 to 256 step 1
table(x) = -1
next
for x = 1 to 64 step 1
table(1+asc(mid(r64,x,1))) = x - 1
next
fGenerateBase64Table = table
end function
''---------------------------------------------------
function fSelectFile()
fSelectFile = ""
strMSHTA = "mshta.exe ""about:<input type=file id=FILE>" & _
"<"&"script>FILE.click();new ActiveXObject(''Scripting.FileSystemObject'')" & _
".GetStandardStream(1).WriteLine(FILE.value);close();resizeTo(0,0);<"&"/script>"""
Set wshShell = CreateObject( "WScript.Shell" )
Set objExec = wshShell.Exec( strMSHTA )
fSelectFile = objExec.StdOut.ReadLine( )
Set objExec = Nothing
Set wshShell = Nothing
end function
''-------------------------------------------------------------------------
sub getBase64()
''this can be BMP, PNG, ICO
REM sImgFile = "favicon.ico"
sImgFile = fSelectFile()
if sImgFile = "" then exit sub
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.GetFile(sImgFile)
filesize = f.size
set f = fso.opentextfile(sImgFile,1,0) ''open as ascii
strBinFile = f.read(filesize)
f.close
set fso = nothing
strPNGFile = fBase64Encode(strBinFile)
s = s & "Base64 encoding of "&sImgFile&"<br><br>" & strPNGFile & "<br><br>"
s = s & "<img src=""data:image/bmp;base64," & strPNGFile & """><br><br>" & vbcrlf
imgbase64.innerhtml = s
end sub
''-------------------------------------------------------------------------
</script>
<style type="text/css">
body {font-family:"CONSOLAS";font-size:"10pt";}
input {font-family:"CONSOLAS";font-size:"8pt";}
</style>
<body>
<input type=button value="Encode an image file..."
data-tooltip title="Choose a PNG, BMP, ICO file to encode in base64"
onclick=getBase64>
<br><br>
<div id=imgbase64 style="word-wrap: break-word;"></div>
</body>
</html>