UIImage副本最终旋转

时间:2010-10-11 14:43:46

标签: objective-c uikit ios4

我正在尝试复制一个uiimage(最终我打算模糊副本)。此时复制的图像在模拟器中正确显示,但在设备上运行时最终旋转90度。

我正在使用以下内容创建acopy:

 CGImageRef cgImage = [sourceImage CGImage];

//从CG Reference中创建一个新图像  UIImage * copyOfImage = [[UIImage alloc] initWithCGImage:cgImage];

源图像来自UIImagePickerController。无论我从图书馆还是相机中获取灵感,都会产生同样的结果。

提前感谢您提供任何帮助

2 个答案:

答案 0 :(得分:0)

根据UIImage的文档,imageOrientation属性包含图像的方向,默认为UIImageOrientationUp。但是,如果图像有任何EXIF数据用于定位,则会返回该数据。

imageWithCGImage:(CGImageRef)cgImage和initWithCGImage:(CGImageRef)CGImage(在UIImage中)将默认为UIImageOrientationUp方向,如果图像/电影实际上是在例如中拍摄的,则可能是错误的。景观模式。

但是如果您使用上面的版本也需要方向并传入sourceImage.imageOrientation它应该可以工作。

答案 1 :(得分:0)

最近碰巧已经这样做了,特别是对于模糊使用,我不建议使用完整的图像。

我发现这个过程太慢了,而且由于原始图像模糊不清,你最好还是制作一个小图像,然后将其缩小并从那里模糊。

我没有测试过这个,因为它与我原来的项目有点不同。

此代码使用UIImage + Resize进行大小调整。

//Creates an autoreleased representing the current screen view
-(UIImage *)currentBlurredImage:(UIImage *)anImage{

CGImageRef imageRef = CGImageCreateWithImageInRect([anImage CGImage], bounds);
UIImage *coppiedImage = [UIImage imageWithCGImage:imageRef scale:1.0 orientation:anImage.imageOrientation];

coppiedImage = [viewImage resizedImage:CGSizeMake(120, 80) interpolationQuality:kCGInterpolationLow];
coppiedImage = [viewImage blurredCopyUsingGuassFactor:4 andPixelRadius:4];
return coppiedImage ;

}

使用此处http://iphonedevelopment.blogspot.com/2010/08/uiimage-blur.html的代码进行模糊处理(信用到期!)。但是我清理了它并处理了一堆内存和其他问题。

http://pastebin.com/MaHvvdim