0

在上传图片之前我正在做以下操作。如果我在上传之前和上传之后检查图像的大小,它会加倍(即,如果我上传了 2 MB 的图像,我可以在服务器上看到 4 MB 的图像)。

    NSTimeInterval timeInterval = [assetDate timeIntervalSince1970];
    ALAssetRepresentation *rep = [temp defaultRepresentation];
    CGImageRef iref = [rep fullResolutionImage];
    StrPath = [StrPath stringByAppendingFormat:@"%d.%@",(int)timeInterval,strImageType];

    UIImage *image =[UIImage imageWithCGImage:iref scale:[rep scale] orientation:(UIImageOrientation)[rep orientation]];
    NSData *dataObj = nil;
    dataObj = UIImageJPEGRepresentation(image, 1.0);
    NSString* StrFileData = [Base64 encode:dataObj];
    NSString* strFileHash = [dataObj md5Test];
4

2 回答 2

0

我有几个建议。如果你注意到这些..它应该对你有帮助

  1. 您可以直接从 ALAsset defaultRepresentation获取 ALAsset 图像 NSData

    getBytes:fromOffset:length:error:方法。

  2. 使用 ALAsset 缩略图而不是检索全分辨率图像

    CGImageRef iref = [myasset aspectRatioThumbnail];

  3. ALAsset Libraay 块将在单独的线程中执行。服务器在主线程中上传也是如此

     dispatch_async(dispatch_get_global_queue(0, 0), ^{
    
       // do the server upload
    
      });
    
于 2013-02-11T02:33:03.247 回答
0

对图像的特定高度宽度使用以下方法

+ (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,它不会被调整大小:)

于 2013-01-23T10:04:08.790 回答