png画像に透明度が含まれているかどうかを判断する必要があります。これを達成するための最も効率的なコードは何でしょうか?画像の透明度を検出する
7
A
答えて
13
pngをピクセルバッファに変換し、vimageを使用してカラー分布のヒストグラムを計算します。その後、アルファチャンネルヒストグラムを確認します。 vimageは1つずつピクセルを通過するよりはるかに高速です。
CVPixelBufferRef pxbuffer = NULL;
vImagePixelCount histogramA[256];
vImagePixelCount histogramR[256];
vImagePixelCount histogramG[256];
vImagePixelCount histogramB[256];
vImagePixelCount *histogram[4];
histogram[0] = histogramA;
histogram[1] = histogramR;
histogram[2] = histogramG;
histogram[3] = histogramB;
vImage_Buffer vbuff;
vbuff.height = CVPixelBufferGetHeight(pxbuffer);
vbuff.width = CVPixelBufferGetWidth(pxbuffer);
vbuff.rowBytes = CVPixelBufferGetBytesPerRow(pxbuffer);
vbuff.data = pxbuffer;
vImage_Error err=vImageHistogramCalculation_ARGB8888 (&vbuff,histogram, 0);
if (err != kvImageNoError) NSLog(@"%ld", err);
BOOL transparent;
for(int i=1;i<256;i++){
if(histogram[0][i]>0) transparent=YES;
}
vimageは、色がバッファ内で順序付けられたARGBであることを前提としています。他に何かがあるとします。 BGRA、代わりにhistogram [3] [i]をチェックするだけです。
vImageConvert_ARGB8888toPlanar8を使用してバッファを4つのプレーンバッファに分割してから、vImageHistogramCalculation_Planar8を使用してアルファバッファのヒストグラム計算を行うだけです。
iOS7以降では、pngをCGImageとして開き、vImageBuffer_initWithCGImageを使用してvimageバッファに直接変換できます(WWDC 2014のセッション703を参照)。
最後に、Core Imageを使用してヒストグラムを計算する方法もあります。
関連する問題
- 1. ImageViewの不透明画像上の透明度画像
- 2. iText画像と透明度
- 3. 透明度のある画像ボタン
- 4. png画像の不透明度/アルファベット/透明度を変更する
- 5. 画像ボタンWPFの透明度問題
- 6. 背景画像の透明度DIV
- 7. 背景画像angacity2の不透明度
- 8. 2つの画像交差透明度
- 9. 変化画像の不透明度と
- 10. ffmpegオーバーレイ画像と低い透明度
- 11. 画像はまだ不透明度値の変化後の半透明の不透明度を示し
- 12. 透明画像オーバーレイソフトウェア
- 13. 透明度の異なる画像にオーバーレイを適用する
- 14. LinearGradientBrushの不透明度をwinformsの画像に適用する
- 15. openFrameworksの画像の透明度を設定する
- 16. JavaのcreateImageで画像の不透明度を調整する
- 17. 透明な画像を描画する
- 18. 変更Bloggerの背景透明度は今すぐ画像ない透明
- 19. 背景画像の不透明度を変更する
- 20. CSSで背景画像の不透明度を変更する
- 21. androidダイアログボックス - 背景画像の不透明度を設定する
- 22. 画像の不透明度を変更する
- 23. 背景画像の不透明度を変更する
- 24. JavaScriptキャンバス - 画像の不透明度を変更する
- 25. 画像の部分に不透明度を追加する(CSS)
- 26. jQueryの不透明度を持つ画像上の不透明度をオーバーライドするには
- 27. オーバーレイ画像と別の透明画像
- 28. 透明なフォームCで不透明度を描画する
- 29. 画像を結合して透明度を維持する
- 30. 重複する透明な画像を含むグループの入力検出
正当な質問に投票したり、正当な質問をしたりするだけでなく、寄付することのない個人によってSOが氾濫しているのは残念です。あなたの素晴らしい答えのために@Stenに感謝します。 – RunLoop