2010-12-18 3 views
10

UIImageからサブ画像を取得したいと思います。私は似たような質問を見て回ったが役に立たなかった。UIImageからサブ画像を返します。

私は取得したいピクセルの範囲を知っています - このサブイメージをどのように元のイメージから戻すことができますか?

答えて

25

これは役立つはず:http://iphonedevelopment.blogspot.com/2010/11/drawing-part-of-uiimage.html

このコードスニペットは、UIImageのカテゴリを作成していますが、コードは簡単にそれがカテゴリされることなく動作するように変更する必要があります。同じことをやっての

短く方法は以下の通りです:

CGRect fromRect = CGRectMake(0, 0, 320, 480); // or whatever rectangle 

CGImageRef drawImage = CGImageCreateWithImageInRect(image.CGImage, fromRect); 
UIImage *newImage = [UIImage imageWithCGImage:drawImage]; 
CGImageRelease(drawImage); 

は、この情報がお役に立てば幸い!迅速な3用@donkimの答えを更新

+0

は、メインスレッドで実行する必要があり、それがスレッドセーフな方法ではありません。 – AechoLiu

+0

これは網膜デバイスでは機能しません。これは、網膜スクリーンの表現ではなく生の画像を切断するためです(つまり、320x480が標準で640x960が元の画像の網膜解像度であれば、CGRectは(0,0 、320、480)は、網膜上にあるときに画像の左上の四分円を切り取る) – ohcibi

+4

@ohcibiこの網も網膜で機能するようにするには、画像の倍率(image.scale')を取得し、それをrectに渡し(その要素ですべての数値を掛ける)、最終的な 'UIImage'を作成するときは、' imageWithCGImage:scale:orientation: 'メソッドを使用して正しいスケール係数を再度設定します。 – Mecki

3

:この方法で

let fromRect=CGRect(x:0,y:0,width:320,height:480) 
    let drawImage = image.cgImage!.cropping(to: fromRect) 
    let bimage = UIImage(cgImage: drawImage!) 
関連する問題