擷取UIImage指定大小區域

2021-07-04 08:28:01 字數 1575 閱讀 4466

最近遇到這樣的需求:從伺服器獲取到一張**,只需要顯示他的左半部分,或者中間部分等等。也就是擷取uiimage指定大小區域。

我的解決方案是對uiimage進行擴充套件。通過cgimagerefcgimage完成擷取,呼叫的方法是:cgimagecreatewithimageinrect。擴充套件類叫uiimage+crop,具體**如下:

#import typedef ns_enum(nsinteger, xycropimagestyle);

@inte***ce uiimage (crop)

- (uiimage *)imagebycroppingwithstyle:(xycropimagestyle)style;

@end

#import "uiimage+crop.h"

@implementation uiimage (crop)

- (uiimage *)imagebycroppingwithstyle:(xycropimagestyle)style

cgimageref imageref = self.cgimage;

cgimageref imagepartref = cgimagecreatewithimageinrect(imageref, rect);

uiimage *cropimage = [uiimage imagewithcgimage:imagepartref];

cgimagerelease(imagepartref);

return cropimage;

}

簡單測試一下,看看有沒有實現我們想要的效果。首先,先載入乙個完整的uiimageview。這個應該不難。**如下:

uiimageview *imgview = [[uiimageview alloc] init];

imgview.frame = cgrectmake((screen.width - 226) / 2, 100, 226, 106);

uiimage *image = [uiimage imagenamed:@"ganggang"];

imgview.image = image;

[self.view addsubview:imgview];

要對uiimage進行裁剪,首先匯入標頭檔案:

#import "uiimage+crop.h"
在上面uiimage *image = [uiimage imagenamed:@"ganggang"];這段**之後加上下面這句:

image = [image imagebycroppingwithstyle:xycropimagestyleleft];
xycropimagestyleleft是擷取**的左半部分。

擷取成功,還可以擷取其他區域的,只需要傳入不同的xycropimagestyle即可實現。

修改UIImage的大小

修改uislider的最大值和最小值的時候,發現需要修改的大小,否則會導致uislider變形。目前蘋果還不支援直接修改uiimage類的大小,只能修改uiimageview的大小。import inte ce uiimage scale uiimage transformtosize cgsize...

ios擷取螢幕指定位置指定大小的實現

這兩天開發中需要擷取螢幕中指定位置的,蒐羅了下沒發現多少資料,大部分都是擷取全屏的功能實現。void loadview 上面 是在image的基礎上面截圖,所以決定先擷取全屏獲取全屏,再在全屏截圖的基礎上進行部分截圖。附上全屏截圖示例 uigraphicsbeginimagecontext self...

ios修改UIImage的大小

修改uislider的最大值和最小值的時候,發現需要修改的大小,否則會導致uislider變形。目前蘋果還不支援直接修改uiimage類的大小,只能修改uiimageview的大小。所以只能通過寫方法的方式來實現修改。如下 import inte ce uiimage scale uiimage t...