評論功能真不錯
評論開通后,果然有很多人吐槽。謝謝大家的支持和關愛,如果有做的不到的地方,還請海涵。畢竟我一個人的力量是有限的,我會盡自己最大的努力大家准備一些干貨。
有些內容可能都是比較基礎的,記住:不積跬步無以至千里,不積小流無以成江海。我想這個道理大家都懂,在為大家准備文章的過程中,對我來說也是一次學習成長。
大家可以繼續吐槽!微信的評論就是一個溝通的渠道,也是一篇文章的延續。你也可以在評論中寫一些你對iOS開發的見解,說不定就會對他人有幫助。
很高興,已經有好幾位iOS開發的朋友答應以后會寫文章投稿給我。在這里,我再強調一下:如果你有好的技術文章一定要投稿給我噢!投稿郵箱:
worldligang@163.com
前面講了截取UIImage指定大小區域,很方便的截取UIImage
。今天要和大家分享的是UIImage
的縮放。
兩種縮放:
-
縮放到指定大小,也就是指定的
size
. -
等比縮放。
縮放到指定大小
- (UIImage*)imageCompressWithSimple:(UIImage*)image scaledToSize:(CGSize)size
{
UIGraphicsBeginImageContext(size);
[image drawInRect:CGRectMake(0,0,size.width,size.height)];
UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;
}
等比縮放
通過縮放系數
- (UIImage*)imageCompressWithSimple:(UIImage*)image scale:(float)scale
{
CGSize size = image.size;
CGFloat width = size.width;
CGFloat height = size.height;
CGFloat scaledWidth = width * scale;
CGFloat scaledHeight = height * scale;
UIGraphicsBeginImageContext(size); // this will crop
[image drawInRect:CGRectMake(0,0,scaledWidth,scaledHeight)];
UIImage* newImage= UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;
}
scale
是縮放系數 。
通過計算得到縮放系數
- (UIImage*)imageByScalingAndCroppingForSize:(CGSize)targetSize
{
UIImage *sourceImage = [UIImage imageNamed:@"test.jpg"];
UIImage *newImage = nil;
CGSize imageSize = sourceImage.size;
CGFloat width = imageSize.width;
CGFloat height = imageSize.height;
CGFloat targetWidth = targetSize.width;
CGFloat targetHeight = targetSize.height;
CGFloat scaleFactor = 0.0;
CGFloat scaledWidth = targetWidth;
CGFloat scaledHeight = targetHeight;
CGPoint thumbnailPoint = CGPointMake(0.0,0.0);
if (CGSizeEqualToSize(imageSize, targetSize) == NO)
{
CGFloat widthFactor = targetWidth / width;
CGFloat heightFactor = targetHeight / height;
if (widthFactor > heightFactor)
scaleFactor = widthFactor; // scale to fit height
else
scaleFactor = heightFactor; // scale to fit width
scaledWidth= width * scaleFactor;
scaledHeight = height * scaleFactor;
// center the image
if (widthFactor > heightFactor)
{
thumbnailPoint.y = (targetHeight - scaledHeight) * 0.5;
}
else if (widthFactor < heightFactor)
{
thumbnailPoint.x = (targetWidth - scaledWidth) * 0.5;
}
}
UIGraphicsBeginImageContext(targetSize); // this will crop
CGRect thumbnailRect = CGRectZero;
thumbnailRect.origin = thumbnailPoint;
thumbnailRect.size.width= scaledWidth;
thumbnailRect.size.height = scaledHeight;
[sourceImage drawInRect:thumbnailRect];
newImage = UIGraphicsGetImageFromCurrentImageContext();
if(newImage == nil)
NSLog(@"could not scale image");
//pop the context to get back to the default
UIGraphicsEndImageContext();
return newImage;
}
很久之前寫了一篇文章解決MWPhotoBrowser中的SDWebImage加載大圖導致的內存警告問題。這個我記得當時從服務器拿到的照片大概有10幾M的樣子,加載出來會導致內存警告。所以我當時通過修改SDWebImage源碼,就是把下載下來的照片進行縮放,內存就降下來了。
一般情況下應該不會加載這么大的照片的,用戶要是知道,早把你的APP給刪掉了。