FC2ブログ

頭と尻尾はくれてやる!

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


サイズを変更したNSImageオブジェクトを画像ファイルとして出力する

NSImageViewオブジェクトのサイズについて
↑この続き。

NSImageオブジェクトを画像ファイルとして保存したい。

まずNSImage、NSImageViewにそれぞれサイズを指定でき、画面上ではそのサイズが反映されることを確認する。
例えば、下のようなコード。元画像は500x344のPNG画像。
{
    float scale = 0.5;
    NSImage *nsimage = [NSImage imageNamed:@"img500x344png.png"];
    nsimage.size = NSMakeSize(nsimage.size.width*scale, nsimage.size.height*scale);
    
    NSImageView *imageView = [NSImageView imageViewWithImage:nsimage];
    imageView.frame = NSMakeRect(0, 0, nsimage.size.width, nsimage.size.height);
    [self.view addSubview:imageView];
}
ここではNSImageオブジェクトのサイズを変えてるけど、NSImageVIewオブジェクトのframeプロパティのサイズ部分を変更しても同じように表示サイズを変えることができる(※1)。

元画像と縮小した画像を表示

↑オリジナルと縮小した画像を重ねて表示している。なお、macOSなので左下が原点。


この”縮小した”画像をPNG画像として保存(※2)し、その画像ファイルの情報を確認すると、、、

ファイル情報のスクショ

↑サイズは縮小されてはいなくて、オリジナルの画像サイズのままだ。
NSImage、NSImageViewオブジェクトのどちらのサイズをいじっても同じ結果になる。

機械学習などで使いたいから本当に縮小された画像データが欲しい、という場合はそれ相応の処理が必要になる。


※1 上記の方法でNSImageのサイズを変更するとキャッシュされたオブジェクトのサイズも変更されるので注意。他ファイルで同じ画像からNSImageオブジェクトを作成するとすでになぜかサイズがオリジナルと違う?!なんてことに。

※2 NSImageオブジェクトを画像で保存する方法はこちら
macOSでSCNView→png画像を作成、保存する



<< NSImageをリサイズ&クロップして保存する  TopPage  NSImageViewオブジェクトのサイズについて >>

コメント


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

トラックバック

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




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

FC2Ad