我正在创建具有不同大小缩略图的图像库。我想将这些矩形缩略图转换为方形大小,以使它们的大小看起来都相似。我不介意从扩展部分中裁剪它,但我不知道如何去做。谁能帮帮我吗?使用目标将矩形图像转换为方形图像c
感谢
潘卡
我正在创建具有不同大小缩略图的图像库。我想将这些矩形缩略图转换为方形大小,以使它们的大小看起来都相似。我不介意从扩展部分中裁剪它,但我不知道如何去做。谁能帮帮我吗?使用目标将矩形图像转换为方形图像c
感谢
潘卡
您需要使用图像中的矩形方法通过图像和所需的边界在...
CGImageRef imageRef = CGImageCreateWithImageInRect([anImage CGImage], requiredBounds);
UIImage *croppedImage = [UIImage imageWithCGImage:imageRef];
CGImageRelease(imageRef);
我已经加入这个一个UIImage类(UIImage的+你可以下载源代码 - Categories example
谢谢西蒙,你的代码帮助我解决了我的问题 – pankaj 2012-02-03 09:48:38
那么,如果你使用UIImageView
来显示你的图像(至少我确信你可以),你可以将其设置为contentMode
财产至UIViewContentModeScaleAspectFill
。这应该“裁剪”你的图像到你的UIImageView的边界。如果您的图片将超出UIImageView
的边界,请确保clipsToBounds
也设置为YES
。
让我知道是否有帮助。
这实际上并不*创建*缩略图,只是使它看起来像一个... – 2012-02-03 09:19:23
我同意。这是'简单'的出路:P – 2012-02-03 10:10:51
我正在使用下一个方法。输入是要缩放的UIImage以及UIImage所在的UIImageView的框架的大小。它在框架的高度和宽度相等时起作用。
一件重要的事情:我保持图像的比例。我不扩大图像覆盖整个广场。如果你想这样做,你必须改变'drawInRect'行[self drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];
并删除if-else。
- (UIImage *)imageWithImage:(UIImage *)image scaledToSize:(CGSize)newSize {
CGFloat scaleRatio;
if (image.size.width > image.size.height) {
scaleRatio = image.size.height/image.size.width;
}else{
scaleRatio = image.size.width/image.size.height;
}
CGAffineTransform scaleTransform = CGAffineTransformMakeScale(scaleRatio, scaleRatio);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextConcatCTM(context, scaleTransform);
UIGraphicsBeginImageContextWithOptions(newSize, NO, 0);
if (image.size.width > image.size.height) {
[image drawInRect:CGRectMake(0, (newSize.height/2)-(newSize.height*scaleRatio/2), newSize.width, newSize.height*scaleRatio)];
}else{
[image drawInRect:CGRectMake((newSize.width/2)-(newSize.width*scaleRatio/2), 0, newSize.width*scaleRatio, newSize.height)];
}
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;
}
这将有助于 - http://stackoverflow.com/questions/4789067/iphone-mask-uiimageview-of-differing-dimensions-into-square-dimension – 2012-02-03 09:17:53
实际上并不*创建*缩略图,只是使它看起来像一个... – 2012-02-03 09:19:16