序文
我々は通常より少ない映像ストリームに注力する可能性が高い、ISMあります。
ブラウザの負荷は、画像はユーザーに、コンテナの内部に表示されます。
しばらくの間、ウェブサーフィン、私は完全な記事の少しを見つけた、またはあまりにも多くのスプレーは私の目を盲目に
需要
(これは別のケースである代わりに、画像の比率を設定するCSSで表示)私は、元の画像の大きさを知りたいです
私は、画像の元のサイズを保存する必要があります。私たちは、元の画像サイズと接触するときは、ローカルの画像をアップロードする必要があります
テキスト
まず、画像の例を作成するために)(新しいイメージを理解し
Image
、ネイティブコンストラクタブラウザが返されHTMLImageElement
たオブジェクトは、そのインスタンスの<img>
インスタンスラベルを。
VaRのMYIMAGE =新しい画像(100、100);
myImage.src = 'demo.jpg';
document.body.appendChild(MYIMAGE)。
このコードは、体内での新しい(より一般的に使用される)と同等に、あります
<img width="100" height="100" src="demo.jpg">
是时候展示他真正的技术了
Imageプロパティ(私は本当に怠惰な、MDNの下から直接スクリーンショット)
プロパティの多くがあり、1つのデモンストレーションを使用することは不可能です。
トピックに戻り、主に以下の属性で、元の画像のサイズを取得
- 幅
- 高さ
- コンプリート
- ONERROR
- onloadイベント
- SRC
- crossorign
例
彼らの知識を適用するために、効果と話すコード
//映像ストリームと、元の画像のサイズを取得し (ヴァル){handleChangeUIImg VAR =このこと VAR = imgReady(関数(){ ] [= VARリスト、INTERVALID = NULL、 //キュー実行する {(ダニ=機能) ため( I = 0 VAR; I <List.length; I ++ ){
?一覧[I] .END list.splice(i-- ,. 1):リスト[I](); }; List.length && STOP()は;! }、 //すべてのキュータイマーを停止 STOP =関数() { てclearInterval(INTERVALID); INTERVALID = NULL; }; 復帰機能(URL、READY、負荷、エラー){ VAR onReady、幅、高さ、newWidth、newHeight、 IMG =新しい新しいイメージ(); img.crossOrigin = '' // !写真クロスドメインを許可され、それは非常に重要です img.src = URL; //画像がキャッシュされている場合、キャッシュされたデータを直接返す IF(img.complete){ ready.call(IMG); 負荷&& load.call(IMG)。 リターン; }。 幅= img.width。 高さ= img.height。 //加载错误后的事件 img.onerror =関数(){ エラー&& error.call(IMG)。 onready.end =はtrue。 IMG = img.onload = img.onerror = NULL; }。 //图片尺寸就绪 onready =関数(){ newWidth = img.width。 newHeight = img.height。 (newWidthもし!== 幅|| newHeight!==高|| newWidth * newHeight > 1024){ //画像は他の領域検出器を使用することができるロードされている場合 ready.call(IMG); onready.end = TRUEに; }; !IF(newWidth == 0 && newHeight ==! 0){ that.getImageColor(IMG) } }; )(onready; //完全にロードされたイベント img.onload =関数(){ //のonload onready高速タイマ範囲の時間差よりもできる //ここチェックとonready前に実行されるよう onready.end onready &&();! 負荷&& load.call(IMG); //のIE GIFアニメーションループは、オンロード実行ブにONLOAD IMG = img.onload = img.onerror = NULL; } ; //実行キューを定期的に添加し た場合(!onready.end){ 、list.push(onReady) //タイマーのみ性能損失ブラウザを低減させるたびに (INTERVALID ===ヌル)IF = INTERVALIDのsetInterval(ダニ、40); }; }; })();
ファニータイプの概要
プロ試験の例としては、元のサイズの画像を取得することです
フォーマットは、他の削除されたデータがあるので、ない全く正しいことがあります。
整理する時間を持っています