将文件压缩成PNG图像存储方法是什么

技术将文件压缩成PNG图像存储方法是什么本篇内容介绍了“将文件压缩成PNG图像存储方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅

本文介绍了“将文件压缩成PNG图像的存储方法是什么”的知识。很多人在实际案例操作中都会遇到这样的困难。接下来,让边肖带领大家学习如何应对这些情况!希望大家认真阅读,学点东西!

这可以实现高压缩比,这将在后面提到。此方法使用canvas控件,这也意味着它仅在支持canvas控件的浏览器中有效。

将文件压缩成PNG图像存储方法是什么

现在可以看到,上面的图片类似于一张有噪声的图片,但实际上是一张由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

(1)

相关推荐

  • 153. 寻找旋转排序数组中的最小值

    技术153. 寻找旋转排序数组中的最小值 153. 寻找旋转排序数组中的最小值描述
    已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组。例如,原数组 nums =

    礼包 2021年11月30日
  • SpringCloud分布式微服务b2b2c电子商务分布式微服务中docker-feign-hystrix的示例分析

    技术SpringCloud分布式微服务b2b2c电子商务分布式微服务中docker-feign-hystrix的示例分析这篇文章主要介绍SpringCloud分布式微服务b2b2c电子商务分布式微服务中docker-fe

    攻略 2021年11月19日
  • 大数据Hadoop技术在银行的七个应用分别是什么

    技术大数据Hadoop技术在银行的七个应用分别是什么大数据Hadoop技术在银行的七个应用分别是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。诈骗侦

    攻略 2021年11月29日
  • php如何去掉一维数组的键值

    技术php如何去掉一维数组的键值这篇文章主要介绍“php如何去掉一维数组的键值”,在日常操作中,相信很多人在php如何去掉一维数组的键值问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”php

    攻略 2021年11月27日
  • html5新增标签是什么(html5视频标签是哪个)

    技术html5视频标签是哪个小编给大家分享一下html5视频标签是哪个,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

    攻略 2021年12月17日
  • 生信pheatmap绘制热图(pheatmap作图前数据)

    技术Pheatmap怎样绘制热图Pheatmap怎样绘制热图,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。随机生成,10个基因,每个基因4个处理,每个处理3

    攻略 2021年12月20日