我有一个应用程序,我缩放我的图像(360,480)到(320,480),然后裁剪图像。它工作得很好。但当我们得到图像时它会得到一个缩放类型的图像。投影到前面。我是这样做的。
[self imageWithImage:(UIImage *)image scaledToSize:CGSizeMake(160.0f,240.0f)];
,我的定义是-
-(UIImage *)imageWithImage:(UIImage *)image scaledToSize:(CGSize)newSize {
//UIGraphicsBeginImageContext(newSize);
UIGraphicsBeginImageContextWithOptions(newSize, NO, 0.0);
[image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
[self cropimage:newImage];
return newImage;
}
在cropimage中我这样做-
-(void)cropimage:(UIImage *)image
{
CGRect cropRect = CGRectMake(20,100,280,200);
CGImageRef imageRef = CGImageCreateWithImageInRect([image CGImage], cropRect);
UIImage* croppedImage = [UIImage imageWithCGImage:imageRef];
CGImageRelease(imageRef);
NSData *pictureData = [NSData dataWithData:UIImagePNGRepresentation(croppedImage)];
}
有人能找出我的方法有什么问题吗?
尝试传递图像。缩放比例而不是0.0,以强制它使用传入的图像比例。
-(UIImage *)imageWithImage:(UIImage *)image scaledToSize:(CGSize)newSize {
//UIGraphicsBeginImageContext(newSize);
UIGraphicsBeginImageContextWithOptions(newSize, NO, image.scale);
[image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
[self cropimage:newImage];
return newImage;
}