我的UIImageView
大小为(144,130)
,捕获后的图像尺寸为(720,960)
。
我用
重新调整了图像大小UIGraphicsBeginImageContextWithOptions(newSize, NO, 0.0);
[image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
这里我给出了新的尺码(144,130)
,因为它是imageview
的尺码。即使图像变得拉长。
我应该做些什么改变,以免图像被拉伸?
EDIT-1
UIImage *imageCapture = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
UIImage *finalImage = [self imageByScalingAndCroppingForSize:(imageview.frame.size)];
根据此link
中的答案EDIT-2
拍摄的图像尺寸为:{720,960}
imageview.frame.size:{144,130}
newSize:{97.5,130}
答案 0 :(得分:2)
调整大小你必须保持宽高比。只是将您的视图的宽高比与实际图像相匹配,并且不会有任何拉伸的图像...
this可能对您有用
答案 1 :(得分:-1)
您已设置了Imageview属性
imageView.contentMode=UIViewContentModeScaleAspectFit;
如果你正在使用nib,那么在View部分中设置imageview属性 - >模式 - > Aspect Fit
无需调整图片大小。它对我有用。
虽然您想要调整图像大小,但您可以在UIImage类别中使用以下图像
- (UIImage *) scaleProportionalToSize: (CGSize)size
{
float widthRatio = size.width/self.size.width;
float heightRatio = size.height/self.size.height;
if(widthRatio > heightRatio)
{
size=CGSizeMake(self.size.width*heightRatio,self.size.height*heightRatio);
} else {
size=CGSizeMake(self.size.width*widthRatio,self.size.height*widthRatio);
}
return [self scaledToSize:size];
}
- (UIImage *)scaledToSize:(CGSize)newSize
{
UIGraphicsBeginImageContext(newSize);
[self drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
//[newImage autorelease];
return newImage;
}
当您将图片大小调整为newSize时,您必须考虑到,如果您通过假设10%调整宽度,则必须仅将高度调整10%。