非常に普通の日常的なタスクを想像してください。アプリケーションは外部画像をロードし、背景を透明にしてから、それらに対していくつかのアクションを実行する必要があります。
多くの場合、あまり考えずに、PNGのみにする必要があると言います。その後、デザイナーはアプリケーションの数千のコンテンツファイルを準備して、サーバーの空き領域を劇的に埋めます。 しかし、ディスクスペースの使用を最適化するタスクを設定したらどうでしょうか。
多くのアプリケーションで非常にうまく使用されている技術は、PNG形式なしでこの問題を解決することです。
必要なのは、2つのgifファイルを生成することだけです。1つは画像を保存し、2つ目は透明な背景のマスクです。
2つのgifファイルのサイズは、1つの完全なpngのサイズよりも大幅に小さくなります。
そのため、以下の例では、画像を含む最初のgifファイルは9 kbしか使用せず、そのマスクは3 kbです。
実際に画像

マスク自体

同じ画像の背景が透明なpngファイルは約35キロバイトを占めます。 65%割引。
組み込みのBitmapData.thresholdメソッドの1つのみを使用して、透明な背景を持つ2つの不透明な画像で3番目の画像を取得できます。マスクの対応するピクセルが白より小さい画像のピクセルを透明なピクセルで置き換えます
gifImageBitmapData.threshold(gifMask.bitmapData, gifMask.getRect(gifMask),new Point(0,0),'<',0xffffffff,0x00FFFFFF,0xffffffff);
結論:半透明のグラデーションを送信する必要はなく、写真から背景をトリミングするだけで、さらに画質が主要な役割を果たさない場合は、上記の技術を使用できます。 ご覧のとおり、画像処理用のコードの量はそれほど増えません。
もちろん、このテクノロジーは普遍的ではなく、欠点もあります。2つの小さなファイルはおそらく1つの大きなファイルよりも長い時間をロードしますが、その役割は果たします。アプリケーションのコンテンツははるかに少なくなります。