iOS:如何从AssetLibrary获取特定大小的图像

iOS:如何从AssetLibrary获取特定大小的图像,ios,objective-c,uiimage,assetslibrary,Ios,Objective C,Uiimage,Assetslibrary,我的应用程序有问题,期待您的帮助。我想上传照片的具体大小**(1200*1800)**从图书馆到服务器,我需要得到原始图像,然后压缩它 UIImage *image = [UIImage imageWithCGImage:[asset fullResolutionImage] scale:[asset scale] orientation:0]; 不幸的是,如果原始图像大小大于20M,我的应用程序将崩溃。那么,有没有办法直接从AssetLibrary中获取特定大小的图像?我刚刚输入了一些有用的

我的应用程序有问题,期待您的帮助。我想上传照片的具体大小**(1200*1800)**从图书馆到服务器,我需要得到原始图像,然后压缩它

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

不幸的是,如果原始图像大小大于20M,我的应用程序将崩溃。那么,有没有办法直接从AssetLibrary中获取特定大小的图像?

我刚刚输入了一些有用的代码,我不确定,但可能对您的情况有所帮助:

用于获取裁剪图像:

UIImage *croppedImg = nil;
CGRect cropRect = CGRectMake(AS YOu Need);
croppedImg = [self croppIngimageByImageName:self.imageView.image toRect:cropRect];
使用以下方法返回
UIImage
(根据您需要的图像大小)

在这里,您可以得到通过上述方法返回的交叉图像

或调整大小

对于特定的高度宽度以及图像也使用以下方法来调整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;
}

此方法返回新图像,并带有所需的特定大小

我刚刚输入了一些有用的代码,我不确定,但可能对您的情况有所帮助:

用于获取裁剪图像:

UIImage *croppedImg = nil;
CGRect cropRect = CGRectMake(AS YOu Need);
croppedImg = [self croppIngimageByImageName:self.imageView.image toRect:cropRect];
使用以下方法返回
UIImage
(根据您需要的图像大小)

在这里,您可以得到通过上述方法返回的交叉图像

或调整大小

对于特定的高度宽度以及图像也使用以下方法来调整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;
}

此方法返回新图像,并带有所需的特定大小

为什么不在加载到内存之前检查图像的字节大小?我需要获取原始图像,然后使用它来调整大小。为什么不在加载到内存之前检查图像的字节大小?我需要获取原始图像,然后使用它来调整大小。但是如何获取原始图像(imageToCrop或imageToCrop)?如果它的大小太大,当我从AssetLibrary获取原始图像时,我的应用程序将收到内存不足警告并崩溃。但如何获取原始图像(imageToCrop或image)?如果它的大小太大,我的应用程序将收到内存不足警告,并在我从AssetLibrary获取原始图像时崩溃。