我正在尝试复制一个uiimage(最终我打算模糊副本)。此时复制的图像在模拟器中正确显示,但在设备上运行时最终旋转90度。
我正在使用以下内容创建acopy:
CGImageRef cgImage = [sourceImage CGImage];
//从CG Reference中创建一个新图像 UIImage * copyOfImage = [[UIImage alloc] initWithCGImage:cgImage];
源图像来自UIImagePickerController。无论我从图书馆还是相机中获取灵感,都会产生同样的结果。
提前感谢您提供任何帮助
答案 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的代码进行模糊处理(信用到期!)。但是我清理了它并处理了一堆内存和其他问题。