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地址栏特效(显示页面内所有加链接的图片的大小和查看当前的浏览器的高度)

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds



Comme nous le savons tous, 7-zip est un logiciel de compression et de décompression entièrement gratuit. Par rapport à d'autres logiciels de compression, sa vitesse de compression est plus rapide et le taux de compression est meilleur. De nombreux utilisateurs se demandent comment le logiciel 7-zip peut compresser un fichier volumineux. la plus petite taille ? En réponse à cette question, l'éditeur a donné une réponse. Comment un logiciel 7-zip compresse-t-il un fichier volumineux à la plus petite taille ? Tout d’abord, téléchargez et installez le logiciel 7-zip sur votre ordinateur. Ensuite, cliquez avec le bouton droit sur le fichier à compresser, affichez la taille du fichier source et enregistrez-le. Ensuite, faites à nouveau un clic droit sur le fichier et sélectionnez 7-zip-Ajouter à l'archive. Une fenêtre apparaîtra disant "Ajouter au package compressé". 2. Ensuite, nous définissons le format de compression dans la fenêtre de compression et sélectionnons la compression maximale pour le niveau de compression.

Ce site Web a rapporté le 7 mars que le Dr Zhou Yuefeng, président de la gamme de produits de stockage de données de Huawei, a récemment assisté à la conférence MWC2024 et a spécifiquement présenté la solution de stockage magnétoélectrique OceanStorArctic de nouvelle génération conçue pour les données chaudes (WarmData) et les données froides (ColdData). Zhou Yuefeng, président de la gamme de produits de stockage de données de Huawei, a publié une série de solutions innovantes Source de l'image : Le communiqué de presse officiel de Huawei joint à ce site est le suivant : Le coût de cette solution est 20 % inférieur à celui de la bande magnétique, et son coût est de 20 % inférieur à celui de la bande magnétique. la consommation électrique est 90 % inférieure à celle des disques durs. Selon les médias technologiques étrangers blockandfiles, un porte-parole de Huawei a également révélé des informations sur la solution de stockage magnétoélectrique : le disque magnétoélectronique (MED) de Huawei est une innovation majeure dans le domaine des supports de stockage magnétiques. ME de première génération

Outils essentiels pour l'analyse boursière : découvrez les étapes pour dessiner des graphiques en bougies en PHP et JS. Des exemples de code spécifiques sont nécessaires. Avec le développement rapide d'Internet et de la technologie, le trading d'actions est devenu l'un des moyens importants pour de nombreux investisseurs. L'analyse boursière est une partie importante de la prise de décision des investisseurs, et les graphiques en bougies sont largement utilisés dans l'analyse technique. Apprendre à dessiner des graphiques en bougies à l'aide de PHP et JS fournira aux investisseurs des informations plus intuitives pour les aider à prendre de meilleures décisions. Un graphique en chandeliers est un graphique technique qui affiche les cours des actions sous forme de chandeliers. Il montre le cours de l'action

La technologie de détection et de reconnaissance des visages est déjà une technologie relativement mature et largement utilisée. Actuellement, le langage d'application Internet le plus utilisé est JS. La mise en œuvre de la détection et de la reconnaissance faciale sur le front-end Web présente des avantages et des inconvénients par rapport à la reconnaissance faciale back-end. Les avantages incluent la réduction de l'interaction réseau et de la reconnaissance en temps réel, ce qui réduit considérablement le temps d'attente des utilisateurs et améliore l'expérience utilisateur. Les inconvénients sont les suivants : il est limité par la taille du modèle et la précision est également limitée ; Comment utiliser js pour implémenter la détection de visage sur le web ? Afin de mettre en œuvre la reconnaissance faciale sur le Web, vous devez être familier avec les langages et technologies de programmation associés, tels que JavaScript, HTML, CSS, WebRTC, etc. Dans le même temps, vous devez également maîtriser les technologies pertinentes de vision par ordinateur et d’intelligence artificielle. Il convient de noter qu'en raison de la conception du côté Web

Comment utiliser PHP et JS pour créer un graphique en bougies boursières. Un graphique en bougies boursières est un graphique d'analyse technique courant sur le marché boursier. Il aide les investisseurs à comprendre les actions de manière plus intuitive en dessinant des données telles que le prix d'ouverture, le prix de clôture, le prix le plus élevé et le prix le plus élevé. prix le plus bas des fluctuations du prix des actions. Cet article vous apprendra comment créer des graphiques en bougies boursières en utilisant PHP et JS, avec des exemples de code spécifiques. 1. Préparation Avant de commencer, nous devons préparer l'environnement suivant : 1. Un serveur exécutant PHP 2. Un navigateur prenant en charge HTML5 et Canvas 3.

Avec le développement rapide de la finance sur Internet, l'investissement en actions est devenu le choix de plus en plus de personnes. Dans le trading d'actions, les graphiques en bougies sont une méthode d'analyse technique couramment utilisée. Ils peuvent montrer l'évolution des cours des actions et aider les investisseurs à prendre des décisions plus précises. Cet article présentera les compétences de développement de PHP et JS, amènera les lecteurs à comprendre comment dessiner des graphiques en bougies boursières et fournira des exemples de code spécifiques. 1. Comprendre les graphiques en bougies boursières Avant de présenter comment dessiner des graphiques en bougies boursières, nous devons d'abord comprendre ce qu'est un graphique en bougies. Les graphiques en chandeliers ont été développés par les Japonais

Git est un système de contrôle de version distribué rapide, fiable et adaptable. Il est conçu pour prendre en charge des flux de travail distribués et non linéaires, ce qui le rend idéal pour les équipes de développement de logiciels de toutes tailles. Chaque répertoire de travail Git est un référentiel indépendant avec un historique complet de toutes les modifications et la possibilité de suivre les versions même sans accès au réseau ni serveur central. GitHub est un référentiel Git hébergé sur le cloud qui fournit toutes les fonctionnalités du contrôle de révision distribué. GitHub est un référentiel Git hébergé sur le cloud. Contrairement à Git qui est un outil CLI, GitHub dispose d'une interface utilisateur graphique basée sur le Web. Il est utilisé pour le contrôle de version, ce qui implique de collaborer avec d'autres développeurs et de suivre les modifications apportées aux scripts et aux scripts au fil du temps.

La photographie mobile a fondamentalement changé la façon dont nous capturons et partageons les moments de la vie. L’avènement des smartphones, notamment de l’iPhone, a joué un rôle clé dans cette évolution. Connu pour sa technologie d'appareil photo avancée et ses fonctionnalités d'édition conviviales, l'iPhone est devenu le premier choix des photographes amateurs et expérimentés. Le lancement d’iOS 17 marque une étape importante dans ce voyage. La dernière mise à jour d'Apple apporte un ensemble amélioré de fonctionnalités de retouche photo, offrant aux utilisateurs une boîte à outils plus puissante pour transformer leurs instantanés quotidiens en images visuellement attrayantes et artistiquement riches. Ce développement technologique simplifie non seulement le processus photographique, mais ouvre également de nouvelles voies d'expression créative, permettant aux utilisateurs d'injecter sans effort une touche professionnelle à leurs photos.
