0

我一直在解码编码图像时遇到问题。

我使用以下代码对从返回的图像进行编码UIImagePickerController

NSData *imageData2 = UIImageJPEGRepresentation(image, 1.0);
    NSString *encodedString = [imageData2 base64Encoding];

我尝试将图像大小调整为 600x600,我也尝试压缩图像。

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
    UIImage *image = [self imageWithImage:[info objectForKey:UIImagePickerControllerEditedImage] scaledToSize:CGSizeMake(600, 600)];

    imgPreviewSelected.image = [self imageWithImage:image scaledToSize:CGSizeMake(600, 600)];

    CGFloat compression = 0.9f;
    CGFloat maxCompression = 0.1f;
    int maxFileSize = 250*1024;

    NSData *imageData = UIImageJPEGRepresentation(image, compression);

    while ([imageData length] > maxFileSize && compression > maxCompression)
    {
        compression -= 0.1;
        imageData = UIImageJPEGRepresentation(image, compression);
    }

    image = [UIImage imageWithData:imageData];

    imagePickerReturnedImage = image;

    NSData *imageData2 = UIImageJPEGRepresentation(image, 1.0);
    NSString *encodedString = [imageData2 base64Encoding];

    [utils postData:@"example.com" : [NSString stringWithFormat:@"image=%@", encodedString]];

    [self dismissViewControllerAnimated:YES completion:NULL];
}

当我尝试解码发送到我的数据库的图像时,它告诉我文件已损坏。

我尝试使用 PHP 和以下网站对其进行解码: http ://www.motobit.com/util/base64-decoder-encoder.asp

我的 MYSQL 数据库告诉我图像是 1MB,我认为对于 600x600 的图像来说这相当大。没有压缩它是1,3MB。

我使用这种方法来缩放我的图像:

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

我希望任何人都可以帮助我,thx

4

2 回答 2

0

我使用了另一种没有base64的方式,所以不需要答案。

于 2013-10-17T12:15:57.703 回答
0

您的代码看起来正确。您是否尝试复制您的 base64string 以在该网站中解码?

您可以通过以下方式检查图像大小

NSLog(@"dataSize: %@",[NSByteCountFormatter stringFromByteCount:data.length countStyle:NSByteCountFormatterCountStyleFile]);
于 2013-10-17T12:55:48.923 回答