1

だから私はPNG画像を含むUIImageを持っています。その画像を NSData に変換してから UIImage に戻すと、画像は問題ありませんが、アルファが 0 のピクセルは RGB 値を失います。それらがゼロになる...それはなぜですか?とにかく私はそれらを保持することができますか?

コード セグメントは次のとおりです。

// Declare a new NSData
NSData test = new NSData();
// Convert my Image (PNG) to NSData
test = MyImageView.Image.AsPNG();
// Convert the NSData back to UIImage
UIImage workAroundImage = UIImage.LoadFromData(test);
MyImageView.Image = workAroundImage;

ピクセルを確認すると、アルファ値が 0 のピクセルは、元の値とは対照的に、RGB 値が 0,0,0 であることがわかります。どうしてこれなの?

これを示す例へのドロップボックス リンクを次に示します。このプロジェクトを実行すると、画像の一部のピクセルのアルファがゼロになります。RGB 値はそのまま残ります。これを確認するには、print ステートメントのコメントを外すことができます。次に、画面をタップすると (TouchesBegan 関数を参照)、UIImage を NSData に変換してから、UIImage に戻します。次に、すべてのピクセル データを再び画面に出力します。ここでは、RGBA データのすべてが 0,0,0,0 であり、アルファがゼロに設定されたインスタンスが RGB 値を保持していないことを示しています。どうしてこれなの?

https://www.dropbox.com/s/21d5k1yex475u2j/TestAlpha_WorkaroundIssue.zip

4

1 に答える 1

1

何故ですか?

これは、画像データに対して乗算済みアルファへの変換が行われたようです。これにより、すべての RGB 値が削除されました (それらに 0 を掛けることにより)

とにかく私はそれらを保持することができますか?

悲しいことに、逆の操作を行うことはできません。元の画像/値を保持する必要があります。

于 2013-03-28T20:28:53.017 に答える