Ios 在发送到服务器之前,使用UIImageJPEGRepresentation压缩图像

Ios 在发送到服务器之前,使用UIImageJPEGRepresentation压缩图像,ios,objective-c,uiimagejpegrepresentation,Ios,Objective C,Uiimagejpegrepresentation,我正在尝试在使用UIImageJPEG表示上传到服务器之前压缩图像 到目前为止,我已经将图像更改为PNG,并将质量更改为0.01f。我尝试了几种不同的写作方法 在发送到服务器之前,这是最优的吗?我应该改变什么来优化 - (void)uploadPhoto { WUTModelImageUploadReq *imageUploadReq = [[WUTModelImageUploadReq alloc]init]; imageUploadReq.photo = [self en

我正在尝试在使用UIImageJPEG表示上传到服务器之前压缩图像

到目前为止,我已经将图像更改为PNG,并将质量更改为0.01f。我尝试了几种不同的写作方法

在发送到服务器之前,这是最优的吗?我应该改变什么来优化

 - (void)uploadPhoto {
    WUTModelImageUploadReq *imageUploadReq = [[WUTModelImageUploadReq alloc]init];

    imageUploadReq.photo = [self encodeToBase64String:[UIImage imageWithData:UIImageJPEGRepresentation(self.viewControllerPost.imageForPost, 0.01f)]];
    imageUploadReq.extension = @"png";

    void (^wsSuccessHandler)(AFHTTPRequestOperation *operation, NSDictionary* responseObject) = ^(AFHTTPRequestOperation *operation, id responseObject){
    NSLog(@"Pull Feed responseObject %@",responseObject);

    NSError *error;
    WUTModelPostImageResponse *wsResponse = [[WUTModelPostImageResponse alloc]initWithDictionary:(NSDictionary *)responseObject error:&error];

    if (error) {
        errorMessage = @"Failure to upload image.";
        [self postExecuteFail];
    }
    else{
        if (wsResponse.success) {
            WUTModelImage *imageTemp = [wsResponse.data firstObject];
            [postItem setObject:imageTemp.photo forKey:@"photo"];
            [self uploadPostFeed];

        }else{
            errorMessage = @"Failure to upload image.";
            [self postExecuteFail];
        }
      }
   };
建议:

  • 使用扩展名“jpg”,而不是“png”
  • 压缩质量使用0.0以最大化压缩
  • 如果您的情况允许,请考虑将图像的大小缩小
  • 建议:

  • 使用扩展名“jpg”,而不是“png”
  • 压缩质量使用0.0以最大化压缩
  • 如果您的情况允许,请考虑将图像的大小缩小


  • 您可以使用UIImageJPEG表示,但将文件扩展名设置为“png”。为什么?我也不知道你说的“最佳”是什么意思,但是如果你想要最大的压缩,就用0.0来表示压缩质量。是的,我试着用PNG而不是JPG来看看压缩是否有差异。只是更改扩展名不会改变文件类型。它仍然是jpg,但分机错了。@rob是的,你是对的。我太简单了。您使用UIImageJPEG表示,但将文件扩展名设置为“png”。为什么?我也不知道你说的“最佳”是什么意思,但是如果你想要最大的压缩,就用0.0来表示压缩质量。是的,我试着用PNG而不是JPG来看看压缩是否有差异。只是更改扩展名不会改变文件类型。它仍然是jpg,但分机错了。@rob是的,你是对的。我太简单了。这里有几个关于堆栈溢出的问题,告诉你如何调整图像的大小。如果你能做到这一点,它可能会给你最好的结果。看:保罗,你可以遵循这些建议。对于第三步,如果您需要根据不同的大小(如大、中、小)调整图像大小,您可以参考此链接,我的意见是将其发送到服务器,然后调整大小。关于第2点,我通常不建议使用如此低的压缩质量,除非您同意在处理过程中图像质量明显降低。就我个人而言,我避免低于0.7或0.8。这取决于应用程序的功能需求,但如果图像保真度很重要,您可能希望完全避免有损压缩。@rob right,这取决于图像的用途。他使用的是0.01,所以差别不大,但是是的,他需要了解折衷。这里有几个关于堆栈溢出的问题,可以告诉你如何调整图像的大小。如果你能做到这一点,它可能会给你最好的结果。看:保罗,你可以遵循这些建议。对于第三步,如果您需要根据不同的大小(如大、中、小)调整图像大小,您可以参考此链接,我的意见是将其发送到服务器,然后调整大小。关于第2点,我通常不建议使用如此低的压缩质量,除非您同意在处理过程中图像质量明显降低。就我个人而言,我避免低于0.7或0.8。这取决于应用程序的功能需求,但如果图像保真度很重要,您可能希望完全避免有损压缩。@rob right,这取决于图像的用途。他用的是0.01,所以差别不大,但是的,他需要了解折衷。