你想不到的压缩方法:将javascript文件压缩成PNG图像存储
2012-06-21 08:38
302 查看
你有没有想过:为了压缩js文件,把js文件转化成PNG图像,然后用 canvas 控件中的 getImageData() 函数将图像再重新读成js文件。我昨天在这里发表的JS文件快速加载的文章中提到了这一方法,有网友对这个做法很感兴趣,于是今天详细解读一下。
这样可以做到很高的压缩比,到底有多高,下面会提到。这种方法用到了 canvas 控件,这也意味着只有支持 canvas 控件的浏览器下才有效。
现在你可以看到,上面的图像类似一个噪声图像,但它实际上是一个由124K的 prototype 框架代码转化成的30K的8位PNG图像(压缩比还不错吧)。
其实,要将代码转化为图像的格式存储,可以转化成GIF和PNG格式。PNG格式的图像有24位和8位,用24位的RGB图像,每个像素可以存储3字节的数据,如果是用8位的RGB图像,每个像素可以存储1字节的数据。
在PHOTOSHOP中做测试发现:一个300x100的纯色杂点8位图像可以压缩到5K,而同样的纯色杂点图像,如果是100x100的24位图像只能压缩到20K。如果是同样图案的8位GIF图像,压缩效果比PNG要差一些。所以,我们选择用8位的PNG图像作为压缩和解压缩的存储格式。
现在,我们就需要开始压缩图像了,下面是用PHP写的压缩文件地址。
http://www.ipaperrater.com/code/07/js-to-png.txt
它读取JS文件并创建一个PNG图像,图像中的每个像素中是一个0-255之间的值,而这个值对应的是JS字符的ascII的值。
当然,除了压缩,还要有解压缩,也就是将图像读取为JS文件的过程。这个函数是用JS写的,可以从下面的位置下载这个文件。
http://www.ipaperrater.com/code/07/png-to-js.txt
最后给出在线测试地址,在这个网页上,您可以在列表中选择一个PNG图像文件,点击 load file 按钮可以在网页上看到这个图像,在图像的下面是由这个图像所读出来的代码文件。
http://www.nihilogic.dk/labs/canvascompress/
注:转载请注明出处,觉得有用就推荐一下吧~
这样可以做到很高的压缩比,到底有多高,下面会提到。这种方法用到了 canvas 控件,这也意味着只有支持 canvas 控件的浏览器下才有效。
现在你可以看到,上面的图像类似一个噪声图像,但它实际上是一个由124K的 prototype 框架代码转化成的30K的8位PNG图像(压缩比还不错吧)。
其实,要将代码转化为图像的格式存储,可以转化成GIF和PNG格式。PNG格式的图像有24位和8位,用24位的RGB图像,每个像素可以存储3字节的数据,如果是用8位的RGB图像,每个像素可以存储1字节的数据。
在PHOTOSHOP中做测试发现:一个300x100的纯色杂点8位图像可以压缩到5K,而同样的纯色杂点图像,如果是100x100的24位图像只能压缩到20K。如果是同样图案的8位GIF图像,压缩效果比PNG要差一些。所以,我们选择用8位的PNG图像作为压缩和解压缩的存储格式。
现在,我们就需要开始压缩图像了,下面是用PHP写的压缩文件地址。
http://www.ipaperrater.com/code/07/js-to-png.txt
它读取JS文件并创建一个PNG图像,图像中的每个像素中是一个0-255之间的值,而这个值对应的是JS字符的ascII的值。
当然,除了压缩,还要有解压缩,也就是将图像读取为JS文件的过程。这个函数是用JS写的,可以从下面的位置下载这个文件。
http://www.ipaperrater.com/code/07/png-to-js.txt
最后给出在线测试地址,在这个网页上,您可以在列表中选择一个PNG图像文件,点击 load file 按钮可以在网页上看到这个图像,在图像的下面是由这个图像所读出来的代码文件。
http://www.nihilogic.dk/labs/canvascompress/
注:转载请注明出处,觉得有用就推荐一下吧~
相关文章推荐
- 【前端优化】你想不到的压缩方法:将javascript文件压缩成PNG图像存储
- 你想不到的压缩方法:将javascript文件压缩成PNG图像存储
- 你想不到的压缩方法:将javascript文件压缩成PNG图像存储
- Javascript(加快脚本加载速度的方法:压缩脚本文件。)
- 文件上传,服务端压缩文件方法,重点是png与gif图片的压缩,保证了透明度与动画
- C#将PDF转为多种图像文件格式的方法(Png/Bmp/Emf/Tiff)
- 合并多个js,css文件的方法 - 在服务端合并和压缩JavaScript和CSS文件
- 利用Python批量压缩png方法实例(支持过滤个别文件与文件夹)
- 【转】PNG图像文件存储结构(1)
- 【转】PNG图像文件存储结构(2)
- 【转】PNG图像文件存储结构(3)
- android开发游记:图像文件压缩方法总结(将图像压缩到指定大小)
- 【转】PNG图像文件存储结构(4)
- 降低PNG图片存储大小方法、图片压缩方法
- 降低PNG图片存储大小方法、图片压缩方法
- Android把Bitmap保存为PNG图像文件的简单方法(同步)
- 利用数据库存储文本文件、图像文件需要的字符串读写方法备忘
- Android把Bitmap保存为PNG图像文件的简单方法(同步)
- 在vc6实现png图像文件的显示方法
- Android把Bitmap保存为PNG图像文件的简单方法(同步)