頭と尻尾はくれてやる!

パソコンおやじのiPhoneアプリ・サイト作成・運営日記


UIImageを縮小するとCGImageGetBytesPerRowの値が変?

UIImageオブジェクトの画像を縮小させたかったのよ。単に表示を小さくするんじゃなくてホントに縮小ね。
方法はだいたいこんな感じ。
{
    UIGraphicsBeginImageContext(CGSizeMake(width, height));
    [image drawInRect:CGRectMake(0, 0, width, height)];
    UIImage *resizedImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
}
UIImageを縮小
↑ここまではいいんだけどさ。

縮小した画像の一ピクセルのRGBAの各値はどうよ?とかそういうのを見たかったのでCGImageRefあたりのを使って調べてみたんだ。
CGImageRef cgImage = image.CGImage;
って関係ね。これを使って例えば横幅なら
CGImageGetWidth(cgImage);
で得ることができるんだわ。

こういうことをやっててはまったのが、
CGImageGetBytesPerRow(cgImage);
で得られる一行あたりのバイト数。リサイズした後の画像サイズ(ピクセル)は意図通りなのに上の値がその幅x4(通常RGBA各unsinged charの一バイトx4で4バイト)とかじゃないのよ、、、?!

どうもリサイズ時に端数の影響を受けるのか行の終わりにカラのデータが含まれてる。なおリサイズしたUIImageオブジェクトをUIImageViewにして表示させたらその端っこのカラデータ分はちゃんと表示されないんだ。
ちなみに縮小時にあまりが出ない場合だとそういう現象は起きないみたい。

<< アナと雪の女王アプリがすごい  TopPage  iCloud.comの迷惑メール設定ができない! >>

コメント


管理者にだけ表示を許可する
 

トラックバック

トラックバックURL
http://ringsbell.blog117.fc2.com/tb.php/889-e5422d67




Copyright ©頭と尻尾はくれてやる!. Powered by FC2 Blog. Template by eriraha.

FC2Ad