将 2 个 UIImage 保存为一张,同时保存旋转、调整大小信息及其质量
我想保存 2 个由用户移动、调整大小和旋转的 UIImage。问题是我不想使用任何“打印屏幕功能”这样的功能,因为它会使两个图像的质量(分辨率)损失很大。
Atm我使用这样的东西:
UIGraphicsBeginImageContext(image1.size);
[image1 drawInRect:CGRectMake(0, 0, image1.size.width, image1.size.height)];
[image2 drawInRect:CGRectMake(0, 0, image1.size.width, image1.size.height)];
UIImage *resultingImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
然而ofc它只是添加两个图像,它们的旋转、调整大小和移动在这里不进行操作。有人可以帮忙考虑编码中的这三个方面吗?任何帮助表示赞赏!
我预先表示最大的感谢:)
编辑:用户可以旋转和缩放图像(处理触摸事件)!
I want to save 2 UIImages that are moved, resized and rotated by user. The problem is i dont want to use such function as any 'printscreen one', because it makes both images to lose a lot from their quality (resolution).
Atm i use something like this:
UIGraphicsBeginImageContext(image1.size);
[image1 drawInRect:CGRectMake(0, 0, image1.size.width, image1.size.height)];
[image2 drawInRect:CGRectMake(0, 0, image1.size.width, image1.size.height)];
UIImage *resultingImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
However ofc it just adds two images, their rotation, resizing and moving isn't operated here. Can anybody help with considering these 3 aspects in coding? Any help is appreciated!
My biggest thanks in advance :)
EDIT: images can be rotated and zoomed by user (handling touch events)!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
在开始绘制之前,您必须设置上下文的变换以匹配 imageView 的变换。
即,
并查看从旋转的 UIImageView 创建 UIImage。
编辑:如果您不知道图像的旋转角度,您可以从 UIImageView 的图层属性中获取变换:
您将不得不使用变换矩阵以使图像在上下文中居中,并且您还可以计算旋转图像的边界矩形,否则它将在角处被裁剪(即,rotatedImageView.image.size 不够大,无法包含其自身的旋转版本)。
You have to set the transform of the context to match your imageView's transform before you start drawing into it.
i.e.,
and check out Creating a UIImage from a rotated UIImageView.
EDIT: if you don't know the angle of rotation of the image you can get the transform from the layer property of the UIImageView:
You will have to play about with the transform matrix to centre the image in the context and you will also have to calculate a bounding rectangle for the rotated image or it will be cropped at the corners (i.e., rotatedImageView.image.size is not big enough to encompass a rotated version of itself).
试试这个:
对于 image2 也是如此。旋转和调整大小分别由方向和缩放处理。 yourOrientation 是一个 UIImageOrientation 枚举变量,可以具有 0-7 之间的值(检查此 Apple 文档 关于不同的 UIImageOrientation 值)。希望它有帮助...
编辑:要处理旋转,只需写下所需旋转的所需方向。您可以左/右旋转 90 度或垂直/水平翻转。例如,在苹果文档中,UIImageOrientationUp 为 0,UIImageOrientationDown 为 1 等等。查看我的 github 存储库作为示例。
Try this:
Similarly for image2. Rotation and resizing are handled by orientation and scale respectively. yourOrientation is a UIImageOrientation enum variable and can have a value from 0-7(check this apple documentation on different UIImageOrientation values). Hope it helps...
EDIT: To handle rotations, just write the desired orientation for the rotation you require. You can rotate 90 deg left/right or flip vertically/horizontally. For eg, in the apple documentation, UIImageOrientationUp is 0, UIImageOrientationDown is 1 and so on. Check out my github repo for an example.