IOS Objective C保持定向,但旋转图像数据

时间:2016-04-18 18:30:33

标签: objective-c rotation uiimage orientation

真的希望你能帮助这一天一整天都在困扰我

是否可以保持UIImage(说景观)的方向,但是在里面旋转图像?

我使用以下代码保存我的UIImage

[UIImagePNGRepresentation(image) writeToFile:pngPath atomically:YES];

其中image是UIImage。

下图显示了根据设备的方向保存的内容。

底部4是我想要实现的目标

Orientation Image

基本上无论你转动设备的方式我都试图让图片在横向模式中显示

感谢任何帮助

标记

4 个答案:

答案 0 :(得分:0)

试试这个

UIImage* landscapeImage = [UIImage imageWithCGImage:image.CGImage
                                            scale:image.scale
                                      orientation:UIImageOrientationLeft];
[UIImagePNGRepresentation(landscapeImage) writeToFile:pngPath atomically:YES];

答案 1 :(得分:0)

我只是正常保存图像文件然后在UI中更改imageView。只要图像始终处于纵向模式,您就可以将图像视图旋转90度,如下所示:

self.imageView.transform = CGAffineTransformMakeRotation(M_PI_2);

然后将imageView模式设置为Aspect Fit

self.imageView.contentMode = UIViewContentModeScaleAspectFit;

但是,如果您的图像需要以其他方式旋转或者已经定位在横向中,则无法使用此功能。

答案 2 :(得分:0)

是否有助于确定拍摄图像的方向?

https://stackoverflow.com/a/15039536

如果没有,也许你可以为自己的问题寻找灵感。基本上创建具有正确宽度/高度的上下文,转换为旋转,绘制图像,存储为新图像。

var currentNextWidth ....

另请阅读有关相机和图库不同结果的评论。

如果您只想显示它旋转,您可以像@bryannorden建议的那样改变UIView。

答案 3 :(得分:0)

NSBitmapImageRep *bit_map = [[NSBitmapImageRep alloc]
                             initWithBitmapDataPlanes:NULL
                             pixelsWide:img_size.width
                             pixelsHigh:img_size.height
                             bitsPerSample:8
                             samplesPerPixel:4
                             hasAlpha:YES
                             isPlanar:NO
                             colorSpaceName:NSDeviceRGBColorSpace
                             bitmapFormat:NSAlphaFirstBitmapFormat
                             bytesPerRow:0
                             bitsPerPixel:0];
NSAffineTransform *trans2=[NSAffineTransform transform];
[trans2 translateXBy:dirtyRect.size.width/2 yBy:dirtyRect.size.height/2];
[trans2 rotateByDegrees: angle];
[trans2 concat];

NSGraphicsContext *g=[NSGraphicsContext graphicsContextWithBitmapImageRep:bit_map];
[NSGraphicsContext saveGraphicsState];
[NSGraphicsContext setCurrentContext:g];
[img drawInRect:NSMakeRect(0, 0, img_size.width, img_size.height)];
[NSGraphicsContext restoreGraphicsState];


[bit_map drawInRect:NSMakeRect(-img_size.width/2, -img_size.height/2, img_size.width, img_size.height)];

在行动中看到它:https://www.youtube.com/watch?v=DD_KYaq3SSg