こちらを参考にしてCGImageのピクセルデータを抽出して色々しようとしていたところ,CFDataGetLength
で取得する値が明らかにおかしいことがあることに気づきました.
基本的に画像のピクセルデータはRed
,Green
,Blue
,Alpha
の4つで,CFDataGetBytePtr
ではその四つが数珠繋ぎ状に連なったデータが手に入るはずです.
その場合,そのデータ数は画像の横幅
×画像の高さ
×4
となるはずなのですが,CFDataGetLength
で取得するデータ数はこれよりも大きな値が返ってくることがあります.
写真データではこの問題が発生しないようなのですが,アルバムに保存したイラストなどの画像データだと頻発するようです.
1行の終わりの位置でRed
,Green
,Blue
,Alpha
の4つ全てが0になっている謎のポイントがあることに気づきました.
これを検出してあげればいいのでしょうか.