FC2ブログ

頭と尻尾はくれてやる!

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


NSImageをリサイズ&クロップして保存する

サイズを変更したNSImageオブジェクトを画像ファイルとして出力する
↑この続き。上記記事では、NSImage、NSImageViewオブジェクトのサイズを変更すると、画面上では反映されて大きさを変えることができるのだが、NSImageを画像として保存するとそのサイズはオリジナル画像のサイズのままだった、ということを書いた。


この保存される画像のサイズを変更したい場合はどうするのか?という話。


macOSでSCNViewのスクショをコードで得る
↑ここでも触れているのだけど、
{
    NSImage *image = [[NSImage alloc] initWithData:[nsview dataWithPDFInsideRect:rect]];
}
↑この方法でNSViewオブジェクトに対してクロップができる(SCNViewオブジェクトに対してはできなかったが)。
これを使えば、NSImageViewの親の親がNSView(※)だから、NSImage→NSImageViewにすればクロップできるのかな?と思い試してみた。
{
    //縮小
    float scale = 0.5;
    NSImage *nsimage = [NSImage imageNamed:@"img500x344png.png"];
    NSImageView *imageView = [NSImageView imageViewWithImage:nsimage];
    imageView.frame = NSMakeRect(0, 0, nsimage.size.width*rate, nsimage.size.height*rate);
    
    //クロップ
    NSRect rect = …

    NSImage *croppedImage = [[NSImage alloc] initWithData:[imageView dataWithPDFInsideRect:rect]];

    // croppedImageを保存する(略)

}
↑最初に縮小したNSImageViewオブジェクトを作成し、それに対してrectで任意の位置、サイズでクロップし、保存するという処理。

保存した画像をFinderで確認したスクショ

↑クロップした画像をPNG画像として保存すると指定したサイズになっていることが確認できた。


※ NSImageViewの親(スーパークラス)はNSControl、その親がNSViewクラス。
ちなみにiOSではUIImageViewの親はUIViewクラス。

<< iPhone 7 Plusのバッテリー交換を配送でAppleに依頼した  TopPage  サイズを変更したNSImageオブジェクトを画像ファイルとして出力する >>

コメント


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

トラックバック

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




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

FC2Ad