ホームページ ウェブフロントエンド jsチュートリアル js は画像の Base64 エンコード文字列をデコードし、画像を出力します。

js は画像の Base64 エンコード文字列をデコードし、画像を出力します。

May 16, 2016 pm 04:55 PM
Base64エンコーディング デコード 出力画像

コードをコピー コードは次のとおりです:





script>
/////////////////////
//base64 でエンコードされた GIF 画像のデコード
// Mozart0
//2005/10/29
////////////////////

//GIF クラス オブジェクトを作成する
/ /クラス GIF はこの関数内で定義されています
// str64: GIF ファイルの Base64 エンコード文字列
// 成功した場合は作成された GIF オブジェクトを返します
// 失敗した場合は null を返します
function getGif(str64 ){
var bytes=decodeBase64(str64);
if(!bytes){
alert("エラー: Base64 エンコーディングが無効です");
return null; gif =new GIF();
for(var i=0;igif.version =String.fromCharCode(bytes[i]);
if(gif.version.slice) ( 0,3)!="GIF"){
alert("エラー: 非 Gif 画像形式");
return null
}
gif.width=bytes[i]| (バイト [i 1]gif.height=bytes[i 2]|(バイト[i 3]var f=bytes[i 4] ;
gif.colorResolution=(f>>4&0x7) 1;
gif.sorted=(f&0x8)?true:false;
gif.backgroundIndex=bytes[i 5];ピクセルアスペクトラジオ= bytes[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("エラー: 画像データが見つかりません");
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();
if(!t)
gif.frames;プッシュ (f);
for(i =t;iif(bytes[i]==0x21&&bytes[i 1]==0xf9)
break
}
while(i}
return gif;

//内部処理、カラーテーブルを生成
function 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;
}

//内部プロセス、統合 データセグメント
function getBlock(pos,s,d){
var p=pos
while(len=s[p]){
for(var i=0;id.push(s[p i]);
p =len;
}

//内部プロセスget 1 フレームのデータ
function getSingleFrame(pos,frame){
var i=pos;
if(bytes[i]==0x21){
i =3; bytes[i]&1)
frame.transparentIndex=bytes[i 3];
frame.delay=bytes[i 1]|(bytes[i 2]
for() i = 5;iif(i==bytes.length){
alert("エラー: イメージ識別子が見つかりません"); return 0;
}
}
frame.offsetX=bytes[i 1]|(bytes[i 2]<<8);
frame.offsetY=bytes[i 3]| (バイト[i 4]<<8);
フレーム.幅=バイト[i 5]|(バイト[i 6]<<8);
フレーム.高さ=バイト[i 7] ]|(bytes[i 8]
var f=bytes[i 9];
if(f&0x40)
frame.interlace=true;
if(f&0x20)
frame.sorted=true;
if(f&0x80){
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;
}

//GIF ファイルを保存するためのデータ構造を定義します
//メソッド showInfo を提供し、画像情報を返します
関数 GIF ( ){
this.version=""; //バージョン番号
this.width=0; //論理画面の幅
this.height=0; //論理画面の高さ
colorResolution =0; // カラー深度
this.sorted=false; // グローバル カラー テーブル分類フラグ
this.globalPalette=null; //背景色インデックス
this.pixelAspectRadio=0; //ピクセルアスペクト比
this.frames=[]; //画像の各フレームについては、GIF_Frameを参照してください
this.showInfo=function(sep){ //画像情報を表示します。sep は行区切り文字です。
if(!sep)
sep="n";
var s="Gif infomation:" sep "-------- --- -------";
s =subInfo(this) sep;
for(var i=0;is =sep "フレーム " i "----------" subInfo(this.frames[i]);
return s;
function subInfo(o){
var s="";
for (var i in o){
if(i=="showInfo"||i=="draw")
s =sep i ":"; (typeof( o[i])=="オブジェクト")
s =(o[i]?o[i].length:"null");
else
s =o[i] ;
}
return s;
}
}
}

//画像のフレームを保存するデータ構造を定義します
//メソッドdraw、drawing
関数を提供しますGIF_Frame (){
this.offsetX=0; //X 方向のオフセット
this.offsetY=0; //Y 方向のオフセット
this.width=0; this.height=0; //画像の高さ
this.localPalette=null; //ローカルカラーテーブル
this.interlace=false;
this.sorted=false; //ローカルカラーテーブル分類フラグ
this.data=[]; //各ピクセルカラーの整数インデックスを格納する画像データ
this.transparentIndex=-1 ; /透明カラーインデックス
this.draw=0; //フレーム遅延
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)
deleteparent.removeChild(img);
img=document.createElement("DIV"); id=id;
parent.appendChild(img);
var t=document.createElement("DIV"); ="hidden";
t.style.position="absolute";
defLayout(this.data,this.localPalette,this.width,this.height,img,t,zoom); t;
}
}
}

//Base64 デコード
//strIn、入力文字列
//各要素に 1 バイトの情報が含まれる
// 失敗した場合は null を返します
function decodeBase64(strIn){
if(!strIn.length||strIn.length%4)
return null;
var str64 =
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 /=";
varindex64=[];
for(var i=0;iindex64[str64.charAt(i)]= i; >var c0,c1,c2,c3,b0,b1,b2;
var len=strIn.length;
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)]; (i 3)];
b0=(c0<2)|(c1>>4);
b1=(c1<<4)|(c2>2 ); >b2=(c2<<6)|c3;
result.push(b1&0xff);
}
if(len1!=len){
c0=index64[strIn.charAt(i)];
c1=index64[strIn.charAt(i 1)]; );
b0=(c0<<2)|(c1>>4);
if(c2!='='){
c2 =index64[c2];
b1=(c1<<4)|(c2>>2);
結果.push(b1&0xff);
結果を返します;
}

//GIF の LZW デコード関数
//arrBytes はソース データ、nBits は初期エンコードビット数
//各要素に含まれる配列が正常に返されます。カラーインデックス
// 失敗した場合は null を返します
function decodeLzw(arrBytes,nBits){
var cc=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マスク[i]=マスク[i-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;
if(code==eoi)
if (コード) ==cc){
table.length=cc 2;
old=code;
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("エラー: 無効な画像データ");
return null;
for(var i=0; i< t.length;i =3)
result.push(parseInt(t.substr(i,3),16))
if(table.length==1< bc ;
}
return result;
}

//バイト配列データのレイアウトに従って、最小の div 数で描画を完了します
function defLayout(data,palette) ,width ,height,image,block,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 ;
}
c=map[i][j];
for(i1=i 1;i1<高さ&map[ i1] [j]==c;i1 );
for(j1=j 1;j1for(i2=i;i2if(i2ブレーク
}
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)*ズーム;
x.style.height=(i1-i)*zoom;
x.style.backgroundColor=palette[c];
image.appendChild(x);
j=j1;
}
}


<スクリプト>
関数 main(){
var t=new Date().getTime();
var xmldom=document.getElementById("imgData");
var gif=getGif("R0lGODlhDwAPAKECAAAAzMzM/////wAAACwAAAAADwAPAAACIISPeQHsrZ5ModrLlN​​48CXF8m2iQ3YmmKqVlRtW4MLwWACH H09wdGltaXplZCBieSBVbGVhZCBTbWFydFNhdmVyIQAAO w==);
var info=document.getElementById("info");
info.innerHTML=gif.showInfo("
");
t=new Date().getTime();
gif.frames[0].draw(document.getElementById("canvas"),1);
info.innerHTML ="
绘图所要時間" (new Date().getTime()-t) "ms";
}




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



このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Python を使用した Base64 エンコードとデコード Python を使用した Base64 エンコードとデコード Sep 02, 2023 pm 01:49 PM

ネットワーク経由で転送したいバイナリ イメージ ファイルがあるとします。相手がファイルを正しく受信できなかったことに驚きました。ファイルには奇妙な文字が含まれているだけです。そうですね、使用しているメディアがテキストのストリーミング用に設計されているのに、生のビットおよびバイト形式でファイルを送信しようとしているようです。このような問題を回避するための解決策は何でしょうか?答えはBase64エンコーディングです。この記事では、Python を使用してバイナリ画像をエンコードおよびデコードする方法を説明します。このプログラムはスタンドアロンのローカル プログラムとして説明されていますが、この概念は、エンコードされた画像をモバイル デバイスからサーバーや他の多くのアプリケーションに送信するなど、さまざまなアプリケーションに適用できます。 Base64とは何ですか?この記事に入る前に、Base6 を定義しましょう

C言語プログラミングで漢字のエンコードとデコードを実装するにはどうすればよいですか? C言語プログラミングで漢字のエンコードとデコードを実装するにはどうすればよいですか? Feb 19, 2024 pm 02:15 PM

現代のコンピューター プログラミングにおいて、C 言語は最も一般的に使用されるプログラミング言語の 1 つです。 C 言語自体は中国語のエンコードとデコードを直接サポートしていませんが、いくつかのテクノロジとライブラリを使用してこの機能を実現できます。この記事では、C言語プログラミングソフトウェアで中国語のエンコードとデコードを実装する方法を紹介します。まず、中国語のエンコードとデコードを実装するには、中国語のエンコードの基本概念を理解する必要があります。現在、最も一般的に使用されている中国語のエンコード スキームは Unicode エンコードです。 Unicode エンコードでは、各文字に一意の数値が割り当てられるため、計算時に

Eclipseの中国語文字化け問題を解決する方法を試す Eclipseの中国語文字化け問題を解決する方法を試す Jan 03, 2024 pm 05:28 PM

Eclipseで中国語の文字化けに悩んでいませんか?これらのソリューションを試すには、特定のコード サンプルが必要です。 1. 背景の紹介 コンピューター技術の継続的な発展に伴い、ソフトウェア開発において中国語がますます重要な役割を果たしています。しかし、多くの開発者は、中国の開発に Eclipse を使用するとコードの文字化けの問題に遭遇し、作業効率に影響を及ぼします。次に、この記事では、一般的なコードの文字化けの問題をいくつか紹介し、読者が Eclipse での中国語の文字化けコードの問題を解決できるように、対応する解決策とコード例を示します。 2. 一般的なコード文字化けの問題と解決策ファイル

Python でのバイト エンコードとデコードのテクニックは何ですか? Python でのバイト エンコードとデコードのテクニックは何ですか? Oct 18, 2023 am 09:27 AM

Python でのバイト エンコードとデコードのテクニックは何ですか?バイトのエンコードとデコードは、テキスト データを処理するときによく遭遇する問題です。 Python には、バイトのエンコードおよびデコード操作の実行に役立つ組み込み関数とモジュールが多数あります。この記事では、いくつかの一般的なバイト エンコードおよびデコード手法を紹介し、対応するコード例を示します。 encode() 関数を使用したバイト エンコーディング encode() 関数は、Unicode 文字列をバイト シーケンスにエンコードするために使用される Python のメソッドです。その一般的な

繰り返し出現する文字を削除して、指定された文字列をデコードします。 繰り返し出現する文字を削除して、指定された文字列をデコードします。 Aug 25, 2023 pm 09:29 PM

この記事の目的は、繰り返し現れる文字を削除して指定された文字列をデコードするプログラムを実装することです。文字列とは何かご存知のとおり、文字列は文字の集合にすぎません。さらに、文字列内で文字を繰り返す回数に制限はありません。同じ文字が文字列内に複数回出現する場合があります。この記事では、重複した文字列を削除することで、指定されたエンコードされた文字列 str をデコードする方法を見つけます。目標は、提供された文字列 str をデコードすることです。この文字列は、「a」が 1 回、「b」が 2 回、「c」が 3 回、「d」が 4 回、最大 26 回の「z」でエンコードされています。 ' 。問題文 重複した文字列を削除して指定された文字列をデコードするプログラムを実装します。注 - 文字に含まれる可能性のあるスペースを無視しないでください

PINをリセットする方法 PINをリセットする方法 Feb 18, 2024 pm 09:02 PM

PIN コードは、個人情報とデバイスを保護するために使用されるセキュリティ対策です。ただし、PIN を忘れたり、ロックを解除する必要がある場合があります。この記事では、PIN コードのロックを解除するいくつかの方法について説明します。まず、デバイスの PIN を忘れた場合は、デバイスが提供するリセット オプションの使用を検討してください。たとえば、携帯電話やタブレットの場合、間違った PIN を複数回入力してリセット オプションをトリガーしようとする可能性があります。具体的な方法はデバイスによって異なる場合があり、デバイスのユーザーマニュアルを参照するか、特定のリセット手順をオンラインで見つけることができます。

PHPのbase64_decode()関数を使用して文字列をデコードする PHPのbase64_decode()関数を使用して文字列をデコードする Nov 03, 2023 pm 12:09 PM

PHP では、base64 エンコードを使用してバイナリ データを印刷可能な ASCII 文字に変換できるため、データの送信と保存が容易になります。 Base64_decode() 関数は、base64 でエンコードされた文字列を元のバイナリ データにデコードできます。以下に、この関数を使用して文字列をデコードする方法を紹介する具体的な PHP コード例を示します。まず、次のコードを使用して文字列を Base64 エンコードできます。 $str="HelloWorl

PHP を使用して Qiniu Cloud Storage から Base64 形式の画像をダウンロードしてデコードするにはどうすればよいですか? PHP を使用して Qiniu Cloud Storage から Base64 形式の画像をダウンロードしてデコードするにはどうすればよいですか? Sep 05, 2023 pm 03:22 PM

PHP を使用して Qiniu Cloud Storage から Base64 形式の画像をダウンロードしてデコードするにはどうすればよいですか?最新のインターネット アプリケーションでは、画像リソースの保存と処理が非常に重要です。 Qiniu Cloud Storage は、安定したクラウド ストレージ プラットフォームとして、ユーザーに豊富な画像処理機能を提供します。この記事では、PHP を使用して Qiniu Cloud Storage から Base64 形式の画像をダウンロードしてデコードする方法を紹介します。 1. Qiniu Cloud Storage アカウントを作成し、API キーを取得します まず、Qiniu Cloud Storage 公式 Web サイトでアカウントを登録し、ストレージ スペースを正常に作成する必要があります。無事に作成できました

See all articles