Javascript 为什么.ico(Base64)看起来浪费了这么多空间?

Javascript 为什么.ico(Base64)看起来浪费了这么多空间?,javascript,base64,gimp,Javascript,Base64,Gimp,下面是我的徽标图标的base64表示。它主要是角色A。我在gimp中创建了它,然后将它转换为base64 有什么我可以做的不同,这样我就不会浪费这么多的空间。我会假设有某种方法可以一遍又一遍地对A进行编码,而不是显式地编写它们 我知道Base64杀死了33%的顶部,但这不是我关心的问题 在gimp中,我保存到.ico,然后使用 网址(数据:image/vnd.microsoft.icon;base64,aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

下面是我的徽标图标的base64表示。它主要是角色A。我在gimp中创建了它,然后将它转换为base64

有什么我可以做的不同,这样我就不会浪费这么多的空间。我会假设有某种方法可以一遍又一遍地对A进行编码,而不是显式地编写它们

我知道Base64杀死了33%的顶部,但这不是我关心的问题

在gimp中,我保存到.ico,然后使用

网址(数据:image/vnd.microsoft.icon;base64,aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa


…/snip继续这样

一旦知道Base64值,就可以编写一个循环来生成我所认为的那么多。根据循环的长度,它可能节省文件空间,也可能不节省文件空间。

Windows图标文件包含未压缩的原始位图数据,Base64只是一种以33%扩展率编码数据的方法

根据您想做什么,有几种解决方案:

  • 使用PNG ICO格式:这是一个正常的多图像Windows*.ICO文件,但位图数据存储为PNG而不是原始位图。这仅受Windows Vista或更高版本的支持。(PNG用于128x128或更大的图标大小,但出于兼容性和性能原因,位图用于所有较小的图标大小)
  • 直接使用PNG-看起来您并没有利用ICO格式的多图像功能,这是针对favicon的吗?请注意,favicon可以是任何位图格式,而不仅仅是ICO
  • 使用您的web服务器的GZIP压缩—假设您通过web提供ICO文件,那么效率低下的存储就不成问题,因为大多数服务器(包括IIS)都提供了HTTP GZIP压缩支持,从而真正缩小了这些内容

除此之外,我/我们需要更多关于您想要完成什么的信息。

将其保存为2调色板GIF文件。

我假设您的图标是BMP编码的,而不是PNG编码的。很可能Base64与此无关,而您的图标只是重复了那么多。原始位图通常会这样做。您能用十六进制编辑验证这一点吗或者?Gimp提供了什么选项?你能编码成PNG吗?A是
000000
,而不是
1010
。我想这取决于你经常需要做这样的事情。我不会写我自己的函数只是为了节省一些K,但是如果更多的是危险的,它可能是值得的。直接将它保存为16x16 PNG图像,然后定义e
在您的网站页面中。