将文件压缩成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)

相关推荐

  • ORACLE rman备份报错RMAN-03009&ORA-19587&ORA-27072该怎么办

    技术ORACLE rman备份报错RMAN-03009&ORA-19587&ORA-27072该怎么办今天就跟大家聊聊有关ORACLE rman备份报错RMAN-03009&ORA-19587&ORA-27072该怎么办

    攻略 2021年12月1日
  • apache pulsar 管理界面(国内哪些公司在使用apachepulsar)

    技术Apache Pulsar的系统架构及设计理念是什么今天就跟大家聊聊有关Apache Pulsar的系统架构及设计理念是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可

    攻略 2021年12月15日
  • gps是什么意思,导航和GPS有什么区别

    技术gps是什么意思,导航和GPS有什么区别GPS(Global Positioning System)即全球卫星定位系统,从1973年发展到2009年36年间,实际意义早已超过设计之初的定义。现在,GPS不仅仅为移动目

    生活 2021年10月28日
  • SQL Server数据库mdf文件中了勒索病毒的解决方法是什么

    技术SQL Server数据库mdf文件中了勒索病毒的解决方法是什么这篇文章主要介绍“SQL Server数据库mdf文件中了勒索病毒的解决方法是什么”,在日常操作中,相信很多人在SQL Server数据库mdf文件中了

    攻略 2021年11月8日
  • oracle基于增量备份如何解决dataguard gap问题

    技术oracle基于增量备份如何解决dataguard gap问题本篇内容介绍了“oracle基于增量备份如何解决dataguard gap问题”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小

    攻略 2021年11月11日
  • 自定义事件

    技术自定义事件 自定义事件可以用来:子组件=父组件传递数据
    一、绑定和使用自定义事件
    在父组件中写子组件的自定义事件(给子组件绑定事件),在子组件中调用
    在App.vue中
    Student@custom

    礼包 2021年12月17日