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

相关推荐

  • web编程技巧有哪些

    技术web编程技巧有哪些本篇内容主要讲解“web编程技巧有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“web编程技巧有哪些”吧!您应该使用像map、filter和red

    攻略 2021年11月11日
  • mybatis的使用步骤

    技术mybatis的使用步骤 mybatis的使用步骤1.什么是mybatisMyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDB

    礼包 2021年11月19日
  • 怎么管理mysql二进制日志

    技术怎么管理mysql二进制日志本篇内容主要讲解“怎么管理mysql二进制日志”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么管理mysql二进制日志”吧!

    攻略 2021年11月18日
  • oraclehashjoin怎么使用(oracle创建hash索引语句)

    技术Oracle数据库中hash join和nested loop怎么用这篇文章主要为大家展示了“Oracle数据库中hash join和nested loop怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,

    攻略 2021年12月13日
  • 值得收藏的CSS可视化工具有哪些

    技术值得收藏的CSS可视化工具有哪些这篇文章主要讲解了“值得收藏的CSS可视化工具有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“值得收藏的CSS可视化工具有哪些”吧

    攻略 2021年11月8日
  • oracle赋予用户创建方法的权限(oracle赋予用户调用某个过程权限)

    技术Oracle中定义者权限和调用者权限的示例分析这篇文章给大家分享的是有关Oracle中定义者权限和调用者权限的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。定义者权限:定义者权限指

    攻略 2021年12月13日