我是 iOS 开发的新手,遇到了一些对我来说很奇怪的事情。我有以下方法来拍摄大图像并制作较小的版本,然后将两者上传到服务器:
- (void)prepareAndUploadImages
{
UIImage *originalImage = self.imageView.image;
UIImage *smallerImage = [originalImage resizedImageWithContentMode:UIViewContentModeScaleAspectFill bounds:CGSizeMake(1024.0, 768.0) interpolationQuality:1];
[self uploadImage:originalImage withFilename:@"original.jpg"];
[self uploadImage:smallerImage withFilename:@"smaller.jpg"];
}
这可以很好地上传图像,但奇怪的是当它们登陆服务器时,"original.jpg"
图像实际上是缩小版并且"smaller.jpg"
是全尺寸图像。
我正在使用UIImageCategoriesUIImage resizedImageWithContentMode:
中的方法,它的返回如下所示:
return [self resizedImage:newSize interpolationQuality:quality];
它调用的 resizedImage:interpolationQuality 方法返回:
return [self resizedImage:newSize transform:transform drawTransposed:drawTransposed interpolationQuality:quality];
resizedImage:transform:... 方法调用返回如下:
// Get the resized image from the context and a UIImage
CGImageRef newImageRef = CGBitmapContextCreateImage(bitmap);
UIImage *newImage = [UIImage imageWithCGImage:newImageRef scale:self.scale orientation:UIImageOrientationUp];
...
return newImage;
所以,我真的希望我的代码设置smallerImage
为这个新图像,该图像是作为对原始图像调用的方法的返回值创建的,但看起来行为是原始图像被原位修改,但之前它被修改到位它返回自我?我不知道,这似乎真的很奇怪。
谁能向我解释这里发生了什么,以及如何修复我的代码以获得所需的行为?