【问题标题】:how to compress the saved image in iphone application [duplicate]如何在iphone应用程序中压缩保存的图像[重复]
【发布时间】:2013-07-20 19:29:18
【问题描述】:

我有一个应用程序,我可以在其中捕获图像,它工作正常,但我想减小我从网上搜索的图像的大小,我发现了一些代码在这里

这是我的代码在捕获图像时工作正常

NSString *type = [info objectForKey:UIImagePickerControllerMediaType];

UIImage *pickedImage = [info objectForKey:UIImagePickerControllerOriginalImage];

NSData *imageData = UIImagePNGRepresentation(pickedImage);

NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];

我想减小拾取图像的大小,我得到了以下代码,但我没有像使用 newSize 那样使用它,而是使用原始图像进行压缩

UIGraphicsBeginImageContext(newSize);
[image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];
UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();   

【问题讨论】:

  • 你想要什么??将该图像以新尺寸保存在您的手机库中??
  • 为什么不先搜索再问?已经有很多答案了。
  • @ParasJoshi 是的,我想将捕获的图像以压缩大小保存在应用程序的文档文件夹中
  • 我把答案贴出来试试看……
  • @user2240329 看到我的答案并保存新图像并检查相册,你可以看到这个新尺寸的新图像..

标签: ios iphone image image-size


【解决方案1】:

你能做的是……

NSString *type = [info objectForKey:UIImagePickerControllerMediaType];

UIImage *pickedImage = [info objectForKey:UIImagePickerControllerOriginalImage];

 CGSize sizeCropped = CGSizeMake(602, 450);//you can adjust any size here...

 pickedImage = [yourclassname imageWithImage:pickedImage scaledToSize:sizeCropped];//call below function...




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

return newImage;
 }

让我知道它是否有效!!!!

编码愉快!!!!!

【讨论】:

  • 它不压缩大小它显示 463KB 我希望它减少到 100 KB
  • 你给图像的尺寸是多少,告诉我... CGSize sizeCropped = CGSizeMake(602, 450);,裁剪后的尺寸是多少?
  • 和你给的一样我给了同样的尺寸
  • 先告诉我你挑选的图片是什么尺寸的?原始尺寸是多少???
  • 不不,我的朋友,你的原始图像的高度和宽度是多少?给我pickImage的宽度和高度。
【解决方案2】:
+(UIImage*)imageWithImage:(UIImage*)image scaledToSize:(CGSize)newSize;
{
    UIGraphicsBeginImageContext( newSize ); 
    [image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];
    UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return newImage;
}

您可以使用这些代码行在需要压缩图像的地方调用此函数。

    CGSize firstSize = CGSizeMake(210.0,210.0);
    UIImage *compImage=[mainclass imageWithImage:image scaledToSize:firstSize];

【讨论】:

  • 在哪里调用这个方法
  • 这一行下面 UIImage *pickedImage = [info objectForKey:UIImagePickerControllerOriginalImage];
  • 它显示大小为 463 KB 没有任何影响
  • 您可以相应地更改第一个大小变量 eg.CGSize firstSize = CGSizeMake(20.0,20.0);
  • 当我检查这个保存图像的尺寸时,它显示 640 480
【解决方案3】:

如果你想用新的尺寸保存新的图像,那么在你的代码之后用下面的行将该图像添加到库中..

UIImageWriteToSavedPhotosAlbum(UIImage *image, id completionTarget, SEL completionSelector, void *contextInfo);

前:

UIGraphicsBeginImageContext(newSize);
[image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];
UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIImageWriteToSavedPhotosAlbum(newImage, nil, nil, nil);

【讨论】:

  • 仅供参考,我不会发布重复的答案,我有博客,我也会在查看之前发布此类答案
  • @TheTiger 看到这个链接parasjoshi3.blogspot.in/2012/05/…
  • 所以你的意思是没有关于 UIImage 调整大小的其他答案?
  • 这不是为了调整 UIImage 的大小,但他想用这个新大小保存新图像,请查看对问题的评论.. 请 :)
  • 哈哈哈 开个玩笑。如果这与调整大小无关,请在回答中说明您在做什么。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-28
  • 1970-01-01
  • 2011-12-07
  • 1970-01-01
  • 2015-02-19
相关资源
最近更新 更多