91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

將文件壓縮成PNG圖像存儲方法是什么

發布時間:2021-11-18 11:58:01 來源:億速云 閱讀:231 作者:iii 欄目:web開發

本篇內容介紹了“將文件壓縮成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圖像存儲方法是什么”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

js
AI

闽侯县| 武穴市| 山丹县| 临沂市| 揭东县| 吉首市| 肥城市| 东乌珠穆沁旗| 安阳县| 和田市| 封开县| 泗阳县| 大姚县| 柘荣县| 通渭县| 枞阳县| 象州县| 高淳县| 虞城县| 菏泽市| 兴山县| 驻马店市| 荥经县| 青神县| 边坝县| 西充县| 扶沟县| 郎溪县| 天津市| 南木林县| 景宁| 江达县| 宁津县| 华阴市| 盐亭县| 中牟县| 靖宇县| 若尔盖县| 建湖县| 麻栗坡县| 襄樊市|