Сохранение изображения UIGraphicsContext в формате .png вместо .jpg

У меня есть этот код для изменения размера моего изображения в миниатюру:

//MAKE THUMBNAIL

    CGSize origImageSize = chosenImage.size;

    //the rectangle of the thumbnail;
    CGRect newRect = CGRectMake(0, 0, 70, 70);

    //scaling ratio
    float ratio = MAX(newRect.size.width/origImageSize.width, newRect.size.height/origImageSize.height);


    UIGraphicsBeginImageContextWithOptions(newRect.size, NO, 0.0);


    CGRect projectRect;
    projectRect.size.width= ratio*origImageSize.width;
    projectRect.size.height=ratio*origImageSize.height;
    //center the image
    projectRect.origin.x= ((newRect.size.width-projectRect.size.width)/2);
    projectRect.origin.y=((newRect.size.height-projectRect.size.height)/2);
    [chosenImage drawInRect:projectRect];

    //get the image from the image context
    UIImage *smallImage = UIGraphicsGetImageFromCurrentImageContext();
    self.thumbnailView.image=smallImage;

    UIImageWriteToSavedPhotosAlbum(smallImage, self, nil, nil); //20kb
    UIGraphicsEndImageContext();

он сохраняет изображение как jpg, я могу сохранить его как png вместо этого? Спасибо


person Kex    schedule 07.02.2015    source источник


Ответы (1)


Попробуйте преобразовать данные вашего изображения в представление данных PNG, а затем обратно в изображение PNG, например:

UIImage *smallImage = UIGraphicsGetImageFromCurrentImageContext();
NSData *pngImageData =  UIImagePNGRepresentation(smallImage);
UIImage *pngSmallImage = [UIImage imageWithData:pngImageData];
UIImageWriteToSavedPhotosAlbum(pngSmallImage, self, nil, nil); //20kb
UIGraphicsEndImageContext();
person Lyndsey Scott    schedule 07.02.2015
comment
потеряю ли я при этом качество изображения? Лучше хранить изображения в формате png или это не имеет большого значения? - person Kex; 07.02.2015
comment
@Kex Сомневаюсь. PNG поддерживает сжатие данных без потерь. - person Lyndsey Scott; 07.02.2015