我需要从磁盘加载图像,添加一些图纸(行等)并保存在磁盘上。我使用以下方法保存:
NSData *imageData = UIImageJPEGRepresentation(image, 0.75);
//save imageData on disk
UIImageJPEG表示增加结果图像的原始宽度、高度和大小。我需要保存图像的原始宽度和高度。可以做吗?我查看了一些关于UIImageJPEG代表的帖子,但是找不到有用的东西。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在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格式的数据,同时允许你控制压缩质量,最后保存到磁盘。在这个过程中,尽管图像的文件大小可能会因压缩而变化,但除非你显式地对图像进行缩放操作,否则它的像素尺寸(宽度和高度)应保持不变。