0

我是 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为这个新图像,该图像是作为对原始图像调用的方法的返回值创建的,但看起来行为是原始图像被原位修改,但之前它被修改到位它返回自我?我不知道,这似乎真的很奇怪。

谁能向我解释这里发生了什么,以及如何修复我的代码以获得所需的行为?

4

1 回答 1

0

弄清楚了:

我认为原始图像实际上大于 1024,但事实并非如此。然后发生的事情是,大小是以点而不是像素为单位给出的,所以我制作的“较小”图像实际上是放大图像,而不是缩小图像。这就是让我失望的原因。

如果我将尺寸减半,我会得到我正在寻找的像素尺寸。

感谢您的评论,他们帮助了!

于 2013-04-18T03:36:23.467 回答