【问题标题】:UIImagePicker image size is more than originalUIImagePicker 图片尺寸大于原图
【发布时间】:2014-08-22 12:33:35
【问题描述】:

工作场所

我在模拟器中有一张大小为 53kb 的图片(.JPG 格式)。

现在我使用UIImagePickerController 选择此图像并将其保存到本地。

选择图像并将其存储在本地的代码如下:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
[[UIApplication sharedApplication] setStatusBarHidden:YES];

NSString *mediaType = info[UIImagePickerControllerMediaType];

if ([mediaType isEqualToString:(NSString *)kUTTypeImage]) {
    // Media is an image

    UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];
    if (image) {
        NSData *jpegData = UIImageJPEGRepresentation(image, 1);

    // Store image.
        BOOL isImageSave = [jpegData writeToFile:filePath atomically:NO];

        if (isImageSave) {
            DLog(@"Image saved");
        } else {
            DLog(@"Error");
        }
    }
}
[self.view dismissViewControllerAnimated:YES completion:nil];

}

问题:

这里的原始图像为 53kb,但当我选择此图像时,图像大小会增加,并且存储图像的大小为 142kb。在这里,我使用压缩来减小大小。但我在UIImagePickerController委托方法中检查了两次,它返回更大尺寸的图像。

有没有人知道,为什么它选择更大的图像。有什么办法可以得到原始大小的图片吗?

【问题讨论】:

    标签: ios compression ios-simulator uiimagepickercontroller jpeg


    【解决方案1】:

    您可以在特定帧中调整图像视图的大小。使用下面的代码

    - (UIImage*)imageWithImage:(UIImage*)image 
                   scaledToSize:(CGSize)newSize;
    {
       UIGraphicsBeginImageContext( newSize );
       [image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];
       UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
       UIGraphicsEndImageContext();
    
       return newImage;
    }
    

    然后将此方法称为:

    UIImage *myIcon = [self imageWithImage:myUIImageInstance scaledToSize:CGSizeMake(20, 20)];
    

    就图像的存储而言,iPhone 使用最快的图像格式是 PNG,因为它对该格式进行了优化。但是,如果您想将这些图像存储为 JPEG,您可以使用 UIImage 并执行以下操作:

    NSData *dataForJPEGFile = UIImageJPEGRepresentation(theImage, 0.6);
    

    【讨论】:

    • 是的,它有效。我们必须缩小规模以缩小规模。谢谢:)
    【解决方案2】:

    您使用的 JPEG 编码质量为 1,对应于 100% 的质量。执行JPEG编码时尝试使用0.2-0.8的设置,然后检查文件大小。

    【讨论】:

    • 是的,我使用了 0.1 压缩比。这实际上将大小从 142kb 减小到 79kb。但它仍然大于原始大小:(。我需要将文件发送到服务器,服务器只允许小于 50kb 的大小。
    • 质量试试 0.01 或 0。
    猜你喜欢
    • 2023-02-04
    • 2013-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-31
    • 1970-01-01
    相关资源
    最近更新 更多