我一直在解码编码图像时遇到问题。
我使用以下代码对从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;
}
我希望有人可以帮助我,谢谢
答案 0 :(得分:0)
我在没有base64的情况下使用了另一种方式,因此无需回答。
答案 1 :(得分:0)
您的代码看起来正确。 您是否尝试将base64string复制到该网站进行解码?
你可以通过
检查图像大小NSLog(@"dataSize: %@",[NSByteCountFormatter stringFromByteCount:data.length countStyle:NSByteCountFormatterCountStyleFile]);