【问题标题】:iOS : How to get image with specific size from AssetsLibraryiOS:如何从 AssetsLibrary 获取特定大小的图像
【发布时间】:2013-07-17 02:12:31
【问题描述】:

我的应用出现问题,期待您的帮助。我想将特定尺寸**(1200 * 1800)**的照片从库上传到服务器,我需要获取原始图像然后压缩它。

UIImage *image = [UIImage imageWithCGImage:[asset fullResolutionImage] scale:[asset scale] orientation:0];

很遗憾,如果原始图像尺寸大于 20M,我的应用会崩溃。那么有没有办法直接从 AssetsLibrary 中获取特定尺寸的图片呢?

【问题讨论】:

  • 为什么不在将图像加载到内存之前检查它的字节大小?
  • 我需要获取原始图像然后使用它来调整大小。

标签: ios objective-c uiimage assetslibrary


【解决方案1】:

我只是放了一些有用的代码,我不确定但可能对你的情况有帮助:

获取裁剪图像:

UIImage *croppedImg = nil;
CGRect cropRect = CGRectMake(AS YOu Need);
croppedImg = [self croppIngimageByImageName:self.imageView.image toRect:cropRect];

使用以下方法返回UIImage你想要的图像大小

- (UIImage *)croppIngimageByImageName:(UIImage *)imageToCrop toRect:(CGRect)rect
    {
        //CGRect CropRect = CGRectMake(rect.origin.x, rect.origin.y, rect.size.width, rect.size.height+15);

        CGImageRef imageRef = CGImageCreateWithImageInRect([imageToCrop CGImage], rect);
        UIImage *cropped = [UIImage imageWithCGImage:imageRef];
        CGImageRelease(imageRef);

        return cropped;
    }

这里你会得到通过上述方法返回的裁剪图像;

或调整大小

对于特定的 hightwidth 以及 image 使用以下方法Resizing UIImage

+ (UIImage*)resizeImage:(UIImage*)image withWidth:(int)width withHeight:(int)height
{
    CGSize newSize = CGSizeMake(width, height);
    float widthRatio = newSize.width/image.size.width;
    float heightRatio = newSize.height/image.size.height;

    if(widthRatio > heightRatio)
    {
        newSize=CGSizeMake(image.size.width*heightRatio,image.size.height*heightRatio);
    }
    else
    {
        newSize=CGSizeMake(image.size.width*widthRatio,image.size.height*widthRatio);
    }


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

    return newImage;
}

此方法返回 NewImage,具有您想要的特定大小。

【讨论】:

  • 但是我怎样才能得到原始图像(imageToCrop 或图像)?如果它的大小太大,当我从 AssetsLibrary 获取原始图像时,我的应用程序会收到内存不足警告并崩溃。
猜你喜欢
  • 2016-09-21
  • 1970-01-01
  • 2022-10-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-29
  • 1970-01-01
相关资源
最近更新 更多