Может ли файл .BMP храниться в HTA (HTML/VBScript)?
Я заметил в резервной копии моих закладок FireFox, что значок, который отображается слева от каждой записи, хранится как поток символов в тегах A. Например:
ICON = "data: image/png; base64, iVBOR [данные удалены, чтобы сократить пример] rkJggg =="
У меня есть 3 файла BMP (2 are 4x20 (249 bytes) and 1 is 102x82 (24.7 KB))
, которые я хотел бы скрыть в своем приложении HTML, чтобы они не потерялись.
Более крупный отображается в теге стиля 3 раза следующим образом (показано 1 появление):
<style type="text/css">
#frmMainBody
{background:grey; background-image:url('Background.bmp'); margin:0;
padding:0; font:normal 10pt Microsoft Sans Serif;}
</style>
Остальные два появляются в подпрограммах VBScript следующим образом:
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
Возможно ли это?
Ответы
Ответ 1
HTA - это текстовый язык разметки, который можно редактировать и редактировать с помощью любого текстового редактора, такого как Notepad ++.
Вы CAN сохраняете любой формат изображения в HTML, CSS и т.д., преобразовывая изображение в base64, а затем вместо
<img src="mypath/myimage.bmp" />
<style type="text/css">
foo { background: url(mypath/myimage.bmp); }
</style>
Вы бы поставили::
<img src="data:image/x-png;base64,iVBORw0KGgoAAAANS....." />
<style type="text/css">
foo { background: url(data:image/x-png;base64,iVBORw0KGgoAAAANS.....); }
</style>
Чтобы сделать это еще проще для вас, вы можете преобразовать изображение в этот формат, используя онлайн-инструмент, например, расположенный здесь → Преобразовать любое изображение в строка Base64 <.
КАК ПРИМЕНЯТЬ ЭТО К КОДУ В ВАШЕМ ВОПРОСЕ
Используя один из инструментов (или создайте свой собственный), найдите и преобразуйте "Background.bmp" в base64, затем измените первый блок кода, который вы разместили, как этот (также сокращенный для экономии места).
<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>
Далее, для кода VBScript найдите и преобразуйте 'Glow.bmp' (так же, как и для "Background.bmp" выше) и измените блок кода, чтобы он выглядел следующим образом:
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
Ответ 2
Изображение с левой стороны называется favicon, а его размер по умолчанию 16x16, и он должен быть в формате .ICO (но это также может быть в другом).
Когда вы писали о скрытии образа .BMP, я думаю, вы хотели сохранить и не скрывать значок, поэтому он всегда будет загружаться, даже если закладки/пользователь отключен. Правильно?
Ответ 3
Я плохо разбираюсь в vb, но вы можете кодировать файл или изображение на base64 (в PHP с помощью функции base64_encode()) для этого должна быть функция в vb. Все, что вам нужно сделать, это просто сохранить содержимое или строки в файле изображения (например, XXXXXX.png) в качестве переменной и передать его в функцию кодирования base64.
Вы также можете использовать этот метод для сохранения изображений непосредственно в базе данных (я думаю...), но вам придется декодировать строку, чтобы изображение появилось. (Предполагая, что вы это делаете.) - Не делайте этого попробуйте это у себя дома. это может убить вашу кошку и сжечь ваш дом:/
Ответ 4
http://www.techerator.com/2011/12/how-to-embed-images-directly-into-your-html/ может быть для вас релевантным ресурсом
Ответ 5
Это может помочь - HTA, который использует VBScript для кодирования файла изображения как base64 (с кодом, адаптированным из Base64 Encode String в VBScript и VBScript, чтобы открыть диалог, чтобы выбрать путь к файлу).
Вы можете сгенерировать код base64 и использовать его в качестве источника изображения, например:
<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>