Сохранение UIImage с UIImagePNGRпредставлением без сохранения моей модификации слоя - PullRequest
2 голосов
/ 16 сентября 2011

Я загружаю изображение из NSData.Исходное изображение было создано в формате JPG.Когда я пытаюсь установить радиус угла и сохранить на диск, я теряю сделанные мной изменения.Я сохраняю на диск в формате PNG, так как предполагал, что в слоях, которые необходимо сохранить, будет создан альфа-канал.

UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageWithData:data]];
[imageView.layer setMasksToBounds:YES];
[imageView.layer setCornerRadius:10.0f];
data = UIImagePNGRepresentation(imageView.image);
// save data to file with .png extension

Проблема заключается в том, что при перезагрузке изображения из файловой системыобратно в UIImage, угловой радиус не виден.

Ответы [ 2 ]

8 голосов
/ 16 сентября 2011

CGContext может сделать «скриншот».

UIGraphicsBeginImageContext(self.frame.size);
[self.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

// Now I use the "screenshot"
NSString *path = [NSHomeDirectory() stringByAppendingString:@"/image.jpg"];
if ([UIImageJPEGRepresentation(image, 1) writeToFile:path atomically:YES]) {
    NSLog(@"save ok");
}
else {
    NSLog(@"save failed");
}
1 голос
/ 16 сентября 2011

Вы устанавливаете угловой радиус на изображении, а не на изображении.Представление PNG основано на изображении, а не на виде изображения, поэтому угловой радиус теряется.

...