2015-02-07 4 views
0

У меня есть этот код, чтобы изменить размер изображения в миниатюре:Сохранение 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 вместо? Благодаря

ответ

2

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

UIImage *smallImage = UIGraphicsGetImageFromCurrentImageContext(); 
NSData *pngImageData = UIImagePNGRepresentation(smallImage); 
UIImage *pngSmallImage = [UIImage imageWithData:pngImageData]; 
UIImageWriteToSavedPhotosAlbum(pngSmallImage, self, nil, nil); //20kb 
UIGraphicsEndImageContext(); 
+0

я потеряю качество изображения, делая это? Лучше ли хранить изображения в формате png или не имеет большого значения? – Kex

+0

@Kex Сомневаюсь. PNG поддерживает сжатие данных без потерь. –

+0

Хорошо, спасибо за помощь! – Kex