Maison interface Web js tutoriel js décode la chaîne codée en base64 de l'image et génère les compétences d'image example_javascript

js décode la chaîne codée en base64 de l'image et génère les compétences d'image example_javascript

May 16, 2016 pm 04:55 PM
encodage base64 解码 image de sortie

Copier le code Le code est le suivant :




script>
//////////////////////////
//décodage d'images GIF encodées en base64
//Par Mozart0
//2005/10/29
////////////////////

//Créer un objet de classe GIF
/ /La classe GIF est définie à l'intérieur de cette fonction
// str64 : chaîne codée en base64 du fichier gif
// Renvoie l'objet GIF créé en cas de succès
// Renvoie null en cas d'échec
fonction getGif(str64) {
var bytes=decodeBase64(str64);
if(!bytes){
alert("Erreur : encodage Base64 invalide");
return null; =nouveau GIF();
for(var i=0;i<6;i )
gif.version =String.fromCharCode(bytes[i]); 0,3)!="GIF"){
alert("Erreur : format d'image non Gif");
return null;
gif.width=bytes[i]|( octets [i 1]<<8);
gif.height=bytes[i 2]|(bytes[i 3]<<8
var f=bytes[i 4]);
gif.colorResolution=(f>>4&0x7) 1;
gif.sorted=(f&0x8)?true:false;
gif.backgroundIndex=bytes[i 5]; = octets[i 6];
if(f&0x80){
gif.globalPalette=[];
i =getPalette(i 7,bytes,gif.globalPalette,2<<(f&0x7));
}
i =7;
for(var j=i;jif(bytes[j]==0x21&&bytes[j 1]==0xf9)
break;
if(j==bytes.length){
for(;iif(bytes[i]==0x2c)
break
if(i==bytes.length){
alert("Erreur : données d'image introuvables");
return null
}
var f=new GIF_Frame(); >if(!getSingleFrame(i,f))
return null
else
gif.frames.push(f);
else{
i=j; 🎜>do{
var f=new GIF_Frame();
var t=getSingleFrame(i,f);
if(!t)
return null
gif.frames.push; (f);
for(i =t;iif(bytes[i]==0x21&&bytes[i 1]==0xf9)
break
}
while(i}
return gif;

//Processus interne, générer une table de couleurs
fonction getPalette(pos,s,d,len) {
len*=3;
for(var i=pos;id.push('#' (s[i]<=0xf?"0 ":"") s[i].toString(16)
(s[i 1]<=0xf?"0":"") s[i 1].toString(16)
(s [i 2]<=0xf?"0":"") s[i 2].toString(16));
return len
}

//Processus interne, intégration Segment de données
fonction getBlock(pos,s,d){
var p=pos
while(len=s[p]){
for(var i=0;id.push(s[p i]);
p =len;
}
return p-pos
}

//Processus interne, obtenir Une trame de données
function getSingleFrame(pos,frame){
var i=pos
if(bytes[i]==0x21){
i =3
if(bytes [ i]&1)
frame.transparentIndex=bytes[i 3];
frame.delay=bytes[i 1]|(bytes[i 2]<<8>for(i); = 5;iif(i==bytes.length){
alert("Erreur : identifiant d'image introuvable"
return 0;
}
}
frame.offsetX=bytes[i 1]|(bytes[i 2]<<8); octets[i 4]<<8);
frame.width=bytes[i 5]|(octets[i 6]<<8);
frame.height=bytes[i 7 ] |(octets[i 8]<<8);
var f=octets[i 9];
i =10;
if(f&0x40)
frame.interlace=true; 🎜>if(f&0x20)
frame.sorted=true;
if(f&0x80){
frame.colorResolution=(f&0x7) 1
frame.localPalette=[]; getPalette(i,bytes,frame.localPalette,1<}
else{
frame.colorResolution=gif.colorResolution;
frame.localPalette=gif.globalPalette ;
}
var lzwLen=bytes[i ] 1;
i =getBlock(i,bytes,frame.data
frame.data=decodeLzw(frame.data,lzwLen); >return frame.data?i-pos:0;
}

//Définir la structure de données pour stocker les fichiers GIF
//Fournir la méthode showInfo et renvoyer les informations sur l'image
fonction GIF( ){
this.version=""; //Numéro de version
this.width=0; //Largeur d'écran logique
this.height=0; //Hauteur d'écran logique
this.colorResolution =0; //Profondeur de couleur
this.sorted=false; //Drapeau de classification de la table de couleurs globale
this.globalPalette=null; //Table de couleurs globale
this.backgroundIndex=-1; Index de couleur
this.pixelAspectRadio=0; //Rapport d'aspect des pixels
this.frames=[]; //Pour chaque image de l'image, voir GIF_Frame
this.showInfo=function(sep){ / /Afficher les informations sur l'image, sep est le séparateur de ligne
if(!sep)
sep="n"
var s="Gif information:" sep "----------; -- -------";
s =subInfo(this) sep;
for(var i=0;is =sep "frames " i "----------" subInfo(this.frames[i]);
return s;
function subInfo(o){
var s="";
for (var i in o){
if(i=="showInfo"||i=="draw")
continue;
s =sep i":
if(; typeof( o[i])=="object")
s =(o[i]?o[i].length:"null");
else
s =o[i]);
}
return s;
}
}
}

//Définir la structure de données pour stocker un cadre d'image
//Fournir la méthode draw, draw
fonction GIF_Frame (){
this.offsetX=0; //Décalage de la direction X
this.offsetY=0; //Décalage de la direction Y
this.width=0 //Largeur de l'image
this.height=0; //Hauteur de l'image
this.localPalette=null; //Table des couleurs locales
this.colorResolution=0; //Profondeur de couleur
this.interlace=false;
this.sorted=false; //Drapeau de classification de la table de couleurs locale
this.data=[]; //Données d'image, stockant l'index entier de chaque couleur de pixel
this.transparentIndex=-1 ; /Indice de couleur transparente
this.delay=0; //Délai de trame
this.draw=function(parent,zoom){
if(!this.data.length)
return ; >if(!parent)
parent=document.body;
if(!zoom)
zoom=1
if(parent.clientWidthparent. style.width=this.width*zoom;
if(parent.clientHeightparent.style.height=this.height*zoom
var id=" ImgDefaultDraw";
var img=document.getElementById(id);
if(img)
delete parent.removeChild(img);
img=document.createElement("DIV"); id=id;
parent.appendChild(img);
img.style.position="absolute";
var t=document.createElement("DIV"); ="hidden";
t.style.position="absolute";
defLayout(this.data,this.localPalette,this.width,this.height,img,t,zoom
delete); t;
}
}
}

//Décodage Base64
//strIn, chaîne d'entrée
//renvoie un tableau avec succès, chaque élément contient un octet d'information
// Renvoie null en cas d'échec
function decodeBase64(strIn){
if(!strIn.length||strIn.length%4)
return null
var str64 =
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 /=";
var index64=[];
for(var i=0;iindex64[str64.charAt(i)]= i; >var c0,c1,c2,c3,b0,b1,b2;
var len=strIn.length;
var len1=len;
if(strIn.charAt(len-1 )==' =')
len1-=4;
var result=[];
for(var i=0,j=0;i c0=index64[ strIn.charAt(i)];
c1=index64[strIn.charAt(i 1)]
c2=index64[strIn.charAt(i 2)]; (je 3)];
b0=(c0<<2)|(c1>>4);
b1=(c1<<4)|(c2>>2 ); >b2=(c2<<6)|c3;
result.push(b0&0xff);
result.push(b1&0xff);
result.push(b2&0xff); if(len1!=len){
c0=index64[strIn.charAt(i)];
c1=index64[strIn.charAt(i 1)]
c2=strIn. );
b0=(c0<<2)|(c1>>4);
result.push(b0&0xff);
if(c2!='='){
c2 =index64[c2];
b1=(c1<<4)|(c2>>2);
result.push(b1&0xff); ;
}

//Fonction de décodage LZW pour GIF
//arrBytes est les données source, nBits est le nombre de bits d'encodage initial
//Renvoie avec succès le tableau, chaque élément inclut un index de couleur
// Renvoie null en cas d'échec
function decodeLzw(arrBytes,nBits){
var cc=1<<(nBits-1
var eoi=cc 1; >var table=[],mask=[],result=[];
for(var i=0;itable[i]=(i>>8&0xf) .toString (16)
(i>>4&0xf).toString(16) (i&0xf).toString(16);
for(i=2,mask[1]=1;i<13;i )
masque[i]=masque[i-1]<<1|1;
var bc=nBits
var pos=0,temp=0,tleft=0,code=0 ,old =0;
while(true){
while(tlefttemp=temp|(arrBytes[pos ]<tleft =8; }
code=temp&mask[bc];
tleft-=bc;
temp>>=bc;
if(code==eoi)
break
if (code ==cc){
table.length=cc 2;
bc=nBits;
old=code;
continue;
var t=""; if(codet=table[code];
if(old!=cc)
table.push(table[old] t.slice(0,3) );
}
else if(oldt=table[old] table[old].slice(0,3);
table.push(t); >}
else{
alert("Erreur : données d'image invalides");
return null
}
old=code;for(var i=0; i< t.length;i =3)
result.push(parseInt(t.substr(i,3),16))
if(table.length==1< bc ;
}
return result;
}

//Selon la disposition des données du tableau d'octets, complétez le dessin avec le moins de divs
function defLayout(data,palette ,largeur,hauteur,image,bloc,zoom){
var map=new Array(height);
for(var i=0;imap[i]=new Array( width);
for(var j=0;jmap[i][j]=data[i*width j]
}
var i, j, i1,i2,j1,j2,c;
for(i=0;ifor(j=0;jif(map[i ][ j]==0x100){
j
continuer
}
c=map[i][j]; i1] [j]==c;i1 );
pour(j1=j 1;j1pour(i2=i;i2if(i2pause
}
for(i2=i;i2for(j2=j;j2map[i2][j2]=0x100;
var x=block.cloneNode(true);
x.style.left=j*zoom;
x.style.top=i*zoom;
x.style.width=(j1-j)*zoom;
x.style.height=(i1-i)*zoom;
x.style.backgroundColor=palette[c];
image.appendChild(x);
j=j1;
}
}


<script> <br>function main(){ <br>var t=new Date().getTime(); <br>var xmldom=document.getElementById("imgData"); <br>var gif=getGif("R0lGODlhDwAPAKECAAAAzMzM/////wAAACwAAAAADwAPAAACIISPeQHsrZ5ModrLlN48CXF8m2iQ3YmmKqVlRtW4MLwWACH H09wdGltaXplZCBieSBVbGVhZCBTbWFydFNhdmVyIQAAOw =="); <br>var info=document.getElementById("info"); <br>info.innerHTML=gif.showInfo("<br>"); <br>t=new Date().getTime(); <br>gif.frames[0].draw(document.getElementById("canvas"),1); <br>info.innerHTML ="<br>绘图耗时" (new Date().getTime()-t) "ms"; <br>} <br></SCRIPT>




页面载入中,请稍候...



Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

Encodage et décodage Base64 à l'aide de Python Encodage et décodage Base64 à l'aide de Python Sep 02, 2023 pm 01:49 PM

Disons que vous disposez d'un fichier image binaire que vous souhaitez transférer sur le réseau. Vous êtes surpris que l'autre partie n'ait pas reçu le fichier correctement : il contient juste des caractères étranges ! Eh bien, il semble que vous essayez d'envoyer le fichier au format bits et octets bruts, alors que le support que vous utilisez est conçu pour diffuser du texte. Quelles sont les solutions pour éviter de tels problèmes ? La réponse est le codage Base64. Dans cet article, je vais vous montrer comment encoder et décoder des images binaires à l'aide de Python. Le programme est expliqué comme un programme local autonome, mais vous pouvez appliquer le concept à différentes applications, telles que l'envoi d'images codées depuis un appareil mobile vers un serveur et de nombreuses autres applications. Qu’est-ce que Base64 ? Avant de plonger dans cet article, définissons Base6

Comment implémenter l'encodage et le décodage des caractères chinois dans la programmation en langage C ? Comment implémenter l'encodage et le décodage des caractères chinois dans la programmation en langage C ? Feb 19, 2024 pm 02:15 PM

Dans la programmation informatique moderne, le langage C est l’un des langages de programmation les plus couramment utilisés. Bien que le langage C lui-même ne prenne pas directement en charge l'encodage et le décodage chinois, nous pouvons utiliser certaines technologies et bibliothèques pour réaliser cette fonction. Cet article présentera comment implémenter l'encodage et le décodage chinois dans un logiciel de programmation en langage C. Premièrement, pour mettre en œuvre l’encodage et le décodage chinois, nous devons comprendre les concepts de base de l’encodage chinois. Actuellement, le système de codage chinois le plus couramment utilisé est le codage Unicode. Le codage Unicode attribue une valeur numérique unique à chaque caractère afin que lors du calcul

Essayez la méthode pour résoudre le problème des caractères chinois tronqués dans Eclipse Essayez la méthode pour résoudre le problème des caractères chinois tronqués dans Eclipse Jan 03, 2024 pm 05:28 PM

Êtes-vous gêné par les caractères chinois tronqués dans Eclipse ? Pour essayer ces solutions, vous avez besoin d'exemples de code spécifiques. 1. Introduction générale Avec le développement continu de la technologie informatique, le chinois joue un rôle de plus en plus important dans le développement de logiciels. Cependant, de nombreux développeurs rencontrent des problèmes de code tronqué lorsqu'ils utilisent Eclipse pour le développement chinois, ce qui affecte l'efficacité du travail. Ensuite, cet article présentera quelques problèmes courants de code tronqué et donnera les solutions correspondantes et des exemples de code pour aider les lecteurs à résoudre le problème du code tronqué chinois dans Eclipse. 2. Problèmes courants de code tronqué et fichiers de solutions

Quelles sont les techniques de codage et de décodage d'octets en Python ? Quelles sont les techniques de codage et de décodage d'octets en Python ? Oct 18, 2023 am 09:27 AM

Quelles sont les techniques de codage et de décodage d’octets en Python ? Le codage et le décodage d'octets sont des problèmes que nous rencontrons souvent lors du traitement de données textuelles. En Python, il existe de nombreuses fonctions et modules intégrés qui nous aident à effectuer des opérations de codage et de décodage d'octets. Cet article présentera plusieurs techniques courantes de codage et de décodage d’octets et donnera des exemples de code correspondants. Encodage d'octets à l'aide de la fonction encode() La fonction encode() est une méthode en Python utilisée pour encoder une chaîne Unicode en une séquence d'octets. c'est général

Décoder la chaîne donnée en supprimant les caractères récurrents Décoder la chaîne donnée en supprimant les caractères récurrents Aug 25, 2023 pm 09:29 PM

Le but de cet article est d'implémenter un programme pour décoder une chaîne donnée en supprimant les caractères récurrents. Comme vous savez ce qu'est une chaîne, une chaîne n'est rien d'autre qu'une collection de caractères. De plus, il n’y a aucune limite au nombre de fois que les caractères peuvent être répétés dans une chaîne. Le même caractère peut apparaître plusieurs fois dans une chaîne. Dans cet article, nous trouverons un moyen de décoder une chaîne codée donnée str en supprimant les occurrences en double. Le but est de décoder la chaîne fournie str qui a été codée avec une occurrence de « a », deux occurrences de « b », trois occurrences de « c », quatre occurrences de « d », jusqu'à 26 occurrences de « z ». . Énoncé du problème Implémentez un programme pour décoder une chaîne donnée en supprimant les occurrences en double. REMARQUE - N'ignorez pas les espaces qui peuvent être inclus dans la lettre

Décoder une chaîne à l'aide de la fonction base64_decode() de PHP Décoder une chaîne à l'aide de la fonction base64_decode() de PHP Nov 03, 2023 pm 12:09 PM

En PHP, l'encodage base64 peut être utilisé pour convertir des données binaires en caractères ASCII imprimables, facilitant ainsi la transmission et le stockage des données. La fonction base64_decode() peut décoder la chaîne codée en base64 en données binaires originales. Ce qui suit fournira des exemples de code PHP spécifiques pour présenter comment utiliser cette fonction pour décoder des chaînes. Tout d'abord, vous pouvez encoder la chaîne en base64 en utilisant le code suivant : $str="HelloWorl

Comment réinitialiser votre code PIN Comment réinitialiser votre code PIN Feb 18, 2024 pm 09:02 PM

Un code PIN est une mesure de sécurité utilisée pour protéger les informations personnelles et les appareils. Cependant, nous pouvons parfois oublier le code PIN ou devoir le déverrouiller. Cet article abordera certaines méthodes pour déverrouiller votre code PIN. Premièrement, si vous avez oublié le code PIN de votre appareil, vous pouvez envisager d'utiliser l'option de réinitialisation fournie par votre appareil. Par exemple, avec un téléphone ou une tablette, vous pouvez essayer de déclencher l'option de réinitialisation en saisissant plusieurs fois le mauvais code PIN. La méthode spécifique peut varier en fonction de l'appareil. Vous pouvez consulter le manuel d'utilisation de l'appareil ou trouver des étapes de réinitialisation spécifiques en ligne.

PHP génère une image GD2 dans un navigateur ou un fichier PHP génère une image GD2 dans un navigateur ou un fichier Mar 21, 2024 am 11:06 AM

Cet article expliquera en détail comment PHP génère des images GD2 dans un navigateur ou un fichier. L'éditeur pense que c'est assez pratique, je le partage donc avec vous comme référence. J'espère que vous pourrez gagner quelque chose après avoir lu cet article. PHP Sortie d'images GD2 vers un navigateur ou un fichier La bibliothèque GD2 en PHP offre de riches fonctionnalités pour créer, éditer et sortir des images. Voici comment afficher une image GD2 vers un navigateur ou un fichier : Sortie vers le navigateur Créer une image : Utilisez la fonction imagecreate() pour créer un nouveau canevas. Dessiner du contenu : utilisez des fonctions telles que imagestring() et imageline() pour dessiner du texte, des segments de ligne et d'autres contenus. Définir les informations d'en-tête : utilisez la fonction header() pour définir le M correct.

See all articles