gpt4 book ai didi

objective-c - 将 2 个 UIImages 保存为一个,同时保存旋转、调整大小信息及其质量

转载 作者:可可西里 更新时间:2023-11-01 05:42:33 24 4
gpt4 key购买 nike

我想保存 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();

但是它只是添加了两个图像,它们的旋转、调整大小和移动在这里没有操作。有人可以帮助考虑编码中的这三个方面吗?感谢您的帮助!

提前致谢 :)

编辑:用户可以旋转和缩放图像(处理触摸事件)!

最佳答案

在开始向其中绘图之前,您必须设置上下文的变换以匹配 imageView 的变换。

即,

CGAffineTransform transform = CGAffineTransformIdentity;
transform = CGAffineTransformTranslate(transform, boundingRect.size.width/2, boundingRect.size.height/2);
transform = CGAffineTransformRotate(transform, angle);
transform = CGAffineTransformScale(transform, 1.0, -1.0);

CGContextConcatCTM(context, transform);

// Draw the image into the context
CGContextDrawImage(context, CGRectMake(-imageView.image.size.width/2, -imageView.image.size.height/2, imageView.image.size.width, imageView.image.size.height), imageView.image.CGImage);

// Get an image from the context
rotatedImage = [UIImage imageWithCGImage: CGBitmapContextCreateImage(context)];

并查看 Creating a UIImage from a rotated UIImageView .

编辑:如果您不知道图像的旋转角度,您可以从 UIImageView 的图层属性中获取变换:

UIGraphicsBeginImageContext(rotatedImageView.image.size);
CGContextRef context = UIGraphicsGetCurrentContext();
CGAffineTransform transform = rotatedImageView.transform;
transform = CGAffineTransformScale(transform, 1.0, -1.0);
CGContextConcatCTM(context, transform);

// Draw the image into the context
CGContextDrawImage(context, CGRectMake(0, 0, rotatedImageView.image.size.width, rotatedImageView.image.size.height), rotatedImageView.image.CGImage);

// Get an image from the context
UIImage *newRotatedImage = [UIImage imageWithCGImage: CGBitmapContextCreateImage(context)];

UIGraphicsEndImageContext();

您将不得不使用变换矩阵来使图像在上下文中居中,您还必须计算旋转图像的边界矩形,否则它将在角处被裁剪(即 rotatedImageView.image.size不够大,无法包含自身的旋转版本)。

关于objective-c - 将 2 个 UIImages 保存为一个,同时保存旋转、调整大小信息及其质量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7092276/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com