iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > html >将文件压缩成PNG图像存储方法是什么
  • 833
分享到

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

2024-04-02 19:04:59 833人浏览 安东尼
摘要

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

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

这样可以做到很高的压缩比,到底有多高,下面会提到。这种方法用到了 canvas 控件,这也意味着只有支持 canvas 控件的浏览器下才有效。

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

现在你可以看到,上面的图像类似一个噪声图像,但它实际上是一个由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写的压缩文件地址。

<?  $filename = "prototype-1.6.0.2.js";  if (file_exists($filename)) {      $iFileSize = filesize($filename);      $iWidth = ceil(sqrt($iFileSize / 1));      $iHeight = $iWidth;      $im = imagecreatetruecolor($iWidth, $iHeight);      $fs = fopen($filename, "r");      $data = fread($fs, $iFileSize);      fclose($fs);      $i = 0;      for ($y=0;$y<$iHeight;$y++) {          for ($x=0;$x<$iWidth;$x++) {              $ord = ord($data[$i]);              imagesetpixel($im,                   $x, $y,                  imagecolorallocate($im,                      $ord,                      $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图像存储方法是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

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

本文链接: https://www.lsjlt.com/news/86746.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 将文件压缩成PNG图像存储方法是什么
    本篇内容介绍了“将文件压缩成PNG图像存储方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!这样可以...
    99+
    2022-10-19
  • Python文件的压缩与解压方法是什么
    本篇内容介绍了“Python文件的压缩与解压方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!前言:Python在人工智能,后台服务等...
    99+
    2023-06-30
  • windows中psd文件压缩的方法是什么
    这篇文章主要介绍“windows中psd文件压缩的方法是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“windows中psd文件压缩的方法是什么”文章能帮助大家...
    99+
    2023-01-29
    windows
  • Java图片批量压缩像素的实现方法是什么
    Java图片批量压缩像素的实现方法是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。图片压缩大法为了防止用户流量的丢失,即使在5g 即将来临的情况下,压缩算法...
    99+
    2023-06-22
  • gzip压缩文件底层结构及文件损坏的修复方法是什么
    本文小编为大家详细介绍“gzip压缩文件底层结构及文件损坏的修复方法是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“gzip压缩文件底层结构及文件损坏的修复方法是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知...
    99+
    2023-06-04
  • Android开发文件存储的方法是什么
    这篇文章主要介绍“Android开发文件存储的方法是什么”,在日常操作中,相信很多人在Android开发文件存储的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Android开发文件存储的方法是什么...
    99+
    2023-06-25
  • matlab运行结果生成图像保存的方法是什么
    在Matlab中,可以使用`saveas`函数将图像保存为指定格式的文件。以下是保存图像的一般步骤:1. 创建要保存的图像,例如使用...
    99+
    2023-09-13
    matlab
  • web前端图片压缩、方向纠正、预览、上传插件的方法是什么
    这篇文章主要讲解了“web前端图片压缩、方向纠正、预览、上传插件的方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“web前端图片压缩、方向纠正、预览...
    99+
    2022-10-19
  • c语言将数据存入文件的方法是什么
    在C语言中,将数据存入文件的方法是使用文件操作函数。常用的文件操作函数有fopen、fprintf、fclose等。1. 打开文件:...
    99+
    2023-08-09
    c语言
  • MongoDB查询与游标之分布式文件存储的方法是什么
    本篇内容主要讲解“MongoDB查询与游标之分布式文件存储的方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MongoDB查询与游标之分布式文件存储的方法是什么”吧!一、查询1、find...
    99+
    2023-07-05
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作