html vbscript base64 bmp hta

¿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: /



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>