iPhone - 操纵/编辑&保存图像(高分辨率)

时间:2011-12-10 11:24:53

标签: objective-c image-processing uiimagepickercontroller save high-resolution

在我正在开发的应用程序中,我有一个部分,我允许用户使用UIImagePicker加载图像(从他们的照片库或拍摄新照片),这样做通常会给出一个很大的图像分辨率.2500x2000(或类似的东西)

现在我将该图像加载到UIImageView中(简单地说就是400x320)。 然后我允许用户选择其他图像/对象覆盖在原始图像的顶部并移动它们/调整大小,然后才能将新图片保存到他们的照片库或通过电子邮件发送。

我只是想知道保存图像的最佳方法是什么,以便图像res仍然像原始图像一样高......现在我只是截取屏幕截图但是这留下了一个小的400x320图片。

谢谢!


所以我得到了我想要的东西,不知道我是否以正确的方式做到了。

这基本上就是我所做的。

//NEWWIDTH and NEWHEIGHT are double the width and height of the UIImageView that i can edit the pictures in 
CGSize newSize = CGSizeMake(NEWWIDTH, NEWHEIGHT);

UIGraphicsBeginImageContext(newSize);

//i'm resizing myOriginalImage before to how i want
[myOriginalImage drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];

UIImage *image;

//Here i go through all the other pictures i added on top and go the same drawInRect method for each of them...multiplying each value x,y,height,width by 2

UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

return newImage;

1 个答案:

答案 0 :(得分:0)

目前尚不清楚你是如何操纵图像的。在我的应用程序中,我在一个简单的UIView中使用Core Graphics进行操作,并通过使用不同的位图上下文获得类似的效果。在我看来,我这样做:

- (void)drawRect:(CGRect)rect {
CGContextRef context = UIGraphicsGetCurrentContext();
[_model render:rect context:context];
}

当我想渲染完整大小的位图以进行保存时,我使用CGBitmapContext运行相同的渲染代码。

这可能不是你的选择,但它对我有用。

祝你好运!