2012年12月31日 星期一

UIImage的縮放處理

首先這個問題出現在UILabel要放入一個圖片時,我們必須要將圖片縮放來適應Label的大小,但是Xcode中沒有現成可用的function,因此需要寫一個轉換的Function。

很幸運地在網路上發現了相關的技術
參考 http://my.oschina.net/rareliu/blog/24322

1.等比率缩放
- (UIImage *)scaleImage:(UIImage *)image toScale:(float)scaleSize
{
UIGraphicsBeginImageContext(CGSizeMake(image.size.width * scaleSize, image.size.height * scaleSize);
[image drawInRect:CGRectMake(0, 0, image.size.width * scaleSize, image.size.height * scaleSize)];
UIImage *scaledImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

return scaledImage;
}

2.自定长宽
- (UIImage *)reSizeImage:(UIImage *)image toSize:(CGSize)reSize
{
UIGraphicsBeginImageContext(CGSizeMake(reSize.width, reSize.height));
[image drawInRect:CGRectMake(0, 0, reSize.width, reSize.height)];
UIImage *reSizeImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

return reSizeImage;
}
以下是我的使用方法 

UILabel *r1_Label = [[UILabel alloc] initWithFrame:CGRectMake(20, 350, 60, 60)];
 UIImage *img = [UIImage imageNamed:@"Aqua.png"];
    

 CGSize imgSize = r1_Label.frame.size;

    r1_Label.backgroundColor = [UIColor colorWithPatternImage:[self reSizeImage:img toSize:imgSize]];



這樣就可以將圖片縮放到Label所要的大小了。理論上這也可以用到其他相關的UIView的元件上。

沒有留言: