本文介绍了“将文件压缩成PNG图像的存储方法是什么”的知识。很多人在实际案例操作中都会遇到这样的困难。接下来,让边肖带领大家学习如何应对这些情况!希望大家认真阅读,学点东西!
这可以实现高压缩比,这将在后面提到。此方法使用canvas控件,这也意味着它仅在支持canvas控件的浏览器中有效。
现在可以看到,上面的图片类似于一张有噪声的图片,但实际上是一张由124K原型框架代码转换而来的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写的压缩文件地址。
?$ filename=' prototype-1 . 6 . 0 . 2 . js ';if(file _ exists($ filename)){ $ iFileSize=file size($ filename);$ iWidth=ceil(sqrt($ iFileSize/1));$ ihaThEr=$ iWidth;$ im=imagecreatetrue color($ iWidth,$ ihaThEr);$fs=fopen($filename,' r ');$data=fread($fs,$ iFileSize);fc lose(fs美元);$ I=0;for($ y=0;$ y $ ihaThEr;$ y){ for($ x=0;$ x $ iWidth$ x){ $ order=order($ data[$ I]);imagesetpixel($im,$x,$y,imagecolorable ($ im,$ order,
$ord, $ord ) ); $i++; } } header("Content-Type: image/png"); imagepng($im); imagedestroy($im); } ?>
它读取JS文件并创建一个PNG图像,图像中的每个像素中是一个0-255之间的值,而这个值对应的是JS字符的ascII的值。
当然,除了压缩,还要有解压缩,也就是将图像读取为JS文件的过程。这个函数是用JS写的,可以从下面的位置下载这个文件。
function loadPNGData(strFilename, fncCallback) { // test for canvas and getImageData var bCanvas = false; var oCanvas = document.createElement("canvas"); if (oCanvas.getContext) { var oCtx = oCanvas.getContext("2d"); if (oCtx.getImageData) { bCanvas = true; } } if (bCanvas) { var oImg = new Image(); oImg.style.position = "absolute"; oImg.style.left = "-10000px"; document.body.appendChild(oImg); oImg.onload = function() { var iWidth = this.offsetWidth; var iHeight = this.offsetHeight; oCanvas.width = iWidth; oCanvas.height = iHeight; oCanvas.style.width = iWidth+"px"; oCanvas.style.height = iHeight+"px"; var oText = document.getElementById("output"); oCtx.drawImage(this,0,0); var oData = oCtx.getImageData(0,0,iWidth,iHeight).data; var a = []; var len = oData.length; var p = -1; for (var i=0;i<len;i+=4) { if (oData[i] > 0) a[++p] = String.fromCharCode(oData[i]); }; var strData = a.join(""); if (fncCallback) { fncCallback(strData); } document.body.removeChild(oImg); } oImg.src = strFilename; return true; } else { return false; } }
“将文件压缩成PNG图像存储方法是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/101257.html