JS文件压缩成PNG图像存储方法
你有没有想过:为了压缩js文件,把js文件转化成PNG图像,然后用 canvas 控件中的 getImageData() 函数将图像再重新读成js文件。我昨天在这里发表的JS文件快速加载的文章中提到了这一方法,有网友对这个做法很感兴趣,于是今天详细解读一下。
这样可以做到很高的压缩比,到底有多高,下面会提到。这种方法用到了 canvas 控件,这也意味着只有支持 canvas 控件的浏览器下才有效。
现在你可以看到,上面的图像类似一个噪声图像,但它实际上是一个由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写的压缩文件的方法:
<?php $filename="http://www.phpernote.com/js/jquery.min.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){ 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图像文件,点击 load file 按钮可以在网页上看到这个图像,在图像的下面是由这个图像所读出来的代码文件。
http://www.nihilogic.dk/labs/canvascompress/
您可能感兴趣的文章
- linux chmod(文件或文件夹权限设定)命令参数及用法详解
- php实现将文件批量压缩打包下载
- php用ZipArchive函数实现文件的压缩与解压缩
- Smarty临时文件创建失败的解决办法
- php判断远程文件是否存在的办法
- php获取目录所有文件并将结果保存到数组的程序
- JS获取按键的代码,Js如何屏蔽用户的按键,Js获取用户按键对应的ASII码(兼容所有浏览器)
- Js地址栏特效(显示页面内所有加链接的图片的大小和查看当前的浏览器的高度)

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Wie wir alle wissen, ist 7-zip eine völlig kostenlose Komprimierungs- und Dekomprimierungssoftware. Die Komprimierungsgeschwindigkeit ist höher und die Komprimierungsrate ist besser. Viele Benutzer fragen sich, wie 7-zip-Software eine große Datei komprimieren kann kleinste Größe? Auf diese Frage gab der Herausgeber eine Antwort. Wie komprimiert die 7-zip-Software eine große Datei auf die kleinste Größe? Laden Sie zunächst die 7-zip-Software herunter und installieren Sie sie auf Ihrem Computer. Klicken Sie anschließend mit der rechten Maustaste auf die zu komprimierende Datei, sehen Sie sich die Größe der Quelldatei an und notieren Sie sie. Klicken Sie dann erneut mit der rechten Maustaste auf die Datei und wählen Sie 7-zip-Zum Archiv hinzufügen. Es erscheint ein Fenster mit der Meldung „Zum komprimierten Paket hinzufügen“. 2. Anschließend stellen wir im Komprimierungsfenster das Komprimierungsformat ein und wählen als Komprimierungsstufe die maximale Komprimierung aus.

Diese Website berichtete am 7. März, dass Dr. Zhou Yuefeng, Präsident der Datenspeicherproduktlinie von Huawei, kürzlich an der MWC2024-Konferenz teilgenommen und speziell die magnetoelektrische Speicherlösung OceanStorArctic der neuen Generation vorgestellt hat, die für warme Daten (WarmData) und kalte Daten (ColdData) entwickelt wurde. Zhou Yuefeng, Präsident der Datenspeicherproduktlinie von Huawei, hat eine Reihe innovativer Lösungen veröffentlicht: Die dieser Website beigefügte offizielle Pressemitteilung von Huawei lautet wie folgt: Die Kosten dieser Lösung sind 20 % niedriger als die von Magnetbändern Der Stromverbrauch ist 90 % niedriger als der von Festplatten. Laut Foreign Technology Media BlocksandFiles gab ein Huawei-Sprecher auch Informationen über die magnetoelektrische Speicherlösung preis: Huaweis magnetoelektronische Disk (MED) sei eine bedeutende Innovation bei magnetischen Speichermedien. ME der ersten Generation

Wesentliche Tools für die Aktienanalyse: Lernen Sie die Schritte zum Zeichnen von Kerzendiagrammen in PHP und JS. Mit der rasanten Entwicklung des Internets und der Technologie ist der Aktienhandel für viele Anleger zu einer wichtigen Möglichkeit geworden. Die Aktienanalyse ist ein wichtiger Teil der Anlegerentscheidung, und Kerzendiagramme werden häufig in der technischen Analyse verwendet. Wenn Sie lernen, wie man Kerzendiagramme mit PHP und JS zeichnet, erhalten Anleger intuitivere Informationen, die ihnen helfen, bessere Entscheidungen zu treffen. Ein Candlestick-Chart ist ein technischer Chart, der Aktienkurse in Form von Candlesticks anzeigt. Es zeigt den Aktienkurs

Die Technologie zur Gesichtserkennung und -erkennung ist bereits eine relativ ausgereifte und weit verbreitete Technologie. Derzeit ist JS die am weitesten verbreitete Internetanwendungssprache. Die Implementierung der Gesichtserkennung und -erkennung im Web-Frontend hat im Vergleich zur Back-End-Gesichtserkennung Vor- und Nachteile. Zu den Vorteilen gehören die Reduzierung der Netzwerkinteraktion und die Echtzeiterkennung, was die Wartezeit des Benutzers erheblich verkürzt und das Benutzererlebnis verbessert. Die Nachteile sind: Es ist durch die Größe des Modells begrenzt und auch die Genauigkeit ist begrenzt. Wie implementiert man mit js die Gesichtserkennung im Web? Um die Gesichtserkennung im Web zu implementieren, müssen Sie mit verwandten Programmiersprachen und -technologien wie JavaScript, HTML, CSS, WebRTC usw. vertraut sein. Gleichzeitig müssen Sie auch relevante Technologien für Computer Vision und künstliche Intelligenz beherrschen. Dies ist aufgrund des Designs der Webseite erwähnenswert

So verwenden Sie PHP und JS zum Erstellen eines Aktienkerzendiagramms. Ein Aktienkerzendiagramm ist eine gängige technische Analysegrafik auf dem Aktienmarkt. Es hilft Anlegern, Aktien intuitiver zu verstehen, indem es Daten wie den Eröffnungskurs, den Schlusskurs, den Höchstkurs usw niedrigster Preis der Aktie. In diesem Artikel erfahren Sie anhand spezifischer Codebeispiele, wie Sie Aktienkerzendiagramme mit PHP und JS erstellen. 1. Vorbereitung Bevor wir beginnen, müssen wir die folgende Umgebung vorbereiten: 1. Ein Server, auf dem PHP 2. Ein Browser, der HTML5 und Canvas 3 unterstützt

Mit der rasanten Entwicklung der Internetfinanzierung sind Aktieninvestitionen für immer mehr Menschen zur Wahl geworden. Im Aktienhandel sind Kerzendiagramme eine häufig verwendete Methode der technischen Analyse. Sie können den sich ändernden Trend der Aktienkurse anzeigen und Anlegern helfen, genauere Entscheidungen zu treffen. In diesem Artikel werden die Entwicklungskompetenzen von PHP und JS vorgestellt, der Leser wird zum Verständnis des Zeichnens von Aktienkerzendiagrammen geführt und es werden spezifische Codebeispiele bereitgestellt. 1. Aktien-Kerzendiagramme verstehen Bevor wir uns mit dem Zeichnen von Aktien-Kerzendiagrammen befassen, müssen wir zunächst verstehen, was ein Kerzendiagramm ist. Candlestick-Charts wurden von den Japanern entwickelt

Git ist ein schnelles, zuverlässiges und anpassungsfähiges verteiltes Versionskontrollsystem. Es ist für die Unterstützung verteilter, nichtlinearer Arbeitsabläufe konzipiert und eignet sich daher ideal für Softwareentwicklungsteams jeder Größe. Jedes Git-Arbeitsverzeichnis ist ein unabhängiges Repository mit einem vollständigen Verlauf aller Änderungen und der Möglichkeit, Versionen auch ohne Netzwerkzugriff oder einen zentralen Server zu verfolgen. GitHub ist ein in der Cloud gehostetes Git-Repository, das alle Funktionen der verteilten Revisionskontrolle bietet. GitHub ist ein Git-Repository, das in der Cloud gehostet wird. Im Gegensatz zu Git, einem CLI-Tool, verfügt GitHub über eine webbasierte grafische Benutzeroberfläche. Es wird zur Versionskontrolle verwendet, was die Zusammenarbeit mit anderen Entwicklern und die Verfolgung von Änderungen an Skripten und anderen umfasst

Die mobile Fotografie hat die Art und Weise, wie wir die Momente des Lebens festhalten und teilen, grundlegend verändert. Das Aufkommen von Smartphones, insbesondere des iPhone, spielte bei diesem Wandel eine Schlüsselrolle. Das iPhone ist für seine fortschrittliche Kameratechnologie und benutzerfreundlichen Bearbeitungsfunktionen bekannt und zur ersten Wahl sowohl für Amateur- als auch für erfahrene Fotografen geworden. Die Einführung von iOS 17 markiert einen wichtigen Meilenstein auf diesem Weg. Das neueste Update von Apple bietet erweiterte Fotobearbeitungsfunktionen und gibt Benutzern ein leistungsfähigeres Toolkit an die Hand, mit dem sie ihre alltäglichen Schnappschüsse in visuell ansprechende und künstlerisch anspruchsvolle Bilder umwandeln können. Diese technologische Entwicklung vereinfacht nicht nur den Fotografieprozess, sondern eröffnet auch neue Möglichkeiten für den kreativen Ausdruck und ermöglicht es Benutzern, ihren Fotos mühelos eine professionelle Note zu verleihen
