2011-09-16 7 views
2

NSDataから画像をロードしています。元のイメージはJPGとして作成されました。コーナーの半径を設定してディスクに保存しようとすると、私は変更を失ってしまいます。私はアルファチャンネルが保存される必要があるレイヤー上に作成されると推測したので、PNG形式でディスクに保存しています。UIImagePNGRepresentationでUIImageを保存すると、レイヤの変更が保存されません。

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にイメージをリロードすると、コーナーの半径が表示されないという問題があります。

答えて

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

画像ではなく、画像の角の半径を設定しています。 PNG表示はイメージビューではなくイメージからのものであるため、コーナー半径は失われます。

+0

ありがとうございました。私がやろうとしていることを達成するためのよりよい方法はありますか? – cthomaschase

関連する問題