使用UIImagePNGRepresentation保存UIImage不保留我的图层修改

时间:2011-09-16 15:39:15

标签: objective-c ios uiimage calayer

我正在从NSData加载图像。原始图像是作为JPG创建的。当我尝试设置角半径并保存到磁盘时,我正在丢失我所做的更改。我将PNG保存为磁盘,因为我认为将在需要保留的图层上创建一个alpha通道。

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 个答案:

答案 0 :(得分:8)

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 :(得分:1)

您在图像视图上设置了角半径,而不是图像。 PNG表示来自图像,而不是图像视图,因此转角半径丢失。