开发者社区 问答 正文

打开、更改并保存UIImage原始大小

我需要从磁盘加载图像,添加一些图纸(行等)并保存在磁盘上。我使用以下方法保存:

NSData *imageData = UIImageJPEGRepresentation(image, 0.75);
//save imageData on disk

UIImageJPEG表示增加结果图像的原始宽度、高度和大小。我需要保存图像的原始宽度和高度。可以做吗?我查看了一些关于UIImageJPEG代表的帖子,但是找不到有用的东西。

展开
收起
游客5akardh5cojhg 2019-12-05 16:50:39 478 分享 版权
阿里云 AI 助理回答

在iOS开发中,UIImageJPEGRepresentation确实会根据你指定的质量参数(compressionQuality)对图像进行有损压缩,这可能会影响到图像的大小,但不会直接改变图像的原始宽度和高度。当你从磁盘加载图片并使用此方法转换为NSData时,原始的尺寸信息(宽度和高度)是被保留的。

如果你想要确保保存到磁盘的图片保持其原始尺寸且仅对质量进行调整,你可以继续使用UIImageJPEGRepresentation,因为这个方法并不直接修改图像的尺寸。但是,为了确认这一点,以及在保存前获取图像的原始尺寸,你可以这样做:

UIImage *originalImage = [UIImage imageWithContentsOfFile:imagePath]; // 加载图像
CGFloat originalWidth = originalImage.size.width;
CGFloat originalHeight = originalImage.size.height;

// 确认尺寸未变
NSLog(@"Original Image Size: %f x %f", originalWidth, originalHeight);

// 转换为NSData并指定压缩质量
NSData *imageData = UIImageJPEGRepresentation(originalImage, 0.75);

// 保存到磁盘
NSString *newImagePath = [self getNewImagePath]; // 假设这是你生成新文件路径的方法
BOOL success = [imageData writeToFile:newImagePath atomically:YES];

if (success) {
    NSLog(@"Image saved with original dimensions.");
} else {
    NSLog(@"Failed to save image.");
}

这段代码首先加载图像,并打印出原始尺寸以验证它们是否符合预期。然后,它将图像转换为JPEG格式的数据,同时允许你控制压缩质量,最后保存到磁盘。在这个过程中,尽管图像的文件大小可能会因压缩而变化,但除非你显式地对图像进行缩放操作,否则它的像素尺寸(宽度和高度)应保持不变。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答
问答地址: