如何保存缩放的uiimage

时间:2012-06-19 05:56:59

标签: iphone uiimageview scale

the screen image linkthe savePic image link,您可以在screenImg和savePic之间找到不同的内容。 我将backgroundImageView设置为一个非常小的png。我想将backgroundimageview保存到图片。 在iPhone模拟器屏幕中,图像边缘是正常的,但savePic的边缘不清晰。任何人都可以告诉我如何保存高清图片。

- (void)viewDidLoad
{
    [super viewDidLoad];
    //_backImgView 320*480
    self.backImgView.image = [UIImage imageNamed:@"Purple.png"];

    [self performSelector:@selector(savePic) withObject:nil afterDelay:0.1];
}

- (void)savePic
{
    BOOL isDir;
    NSString *dirPath = [NSHomeDirectory() stringByAppendingPathComponent:@"/Documents/Pic"]; 
    NSFileManager *fm = [NSFileManager defaultManager];
    if(![fm fileExistsAtPath:dirPath isDirectory:&isDir]){
        BOOL bo = [fm createDirectoryAtPath:dirPath withIntermediateDirectories:YES attributes:nil error:nil];
        if(!bo){
            NSLog(@"-->Create CardSlide Dir Fail!!!");
            return;
        }
    }

    UIGraphicsBeginImageContext(_backImgView.bounds.size);
    //UIGraphicsBeginImageContextWithOptions(_backImgView.bounds.size, _backImgView.opaque, 2.0);
    CGContextSetAllowsAntialiasing(UIGraphicsGetCurrentContext(), YES);
    [_backImgView drawRect:_backImgView.bounds];
    //[_backImgView.layer renderInContext:UIGraphicsGetCurrentContext()];

    UIImage *bgImg = UIGraphicsGetImageFromCurrentImageContext();  
    UIGraphicsEndImageContext();

    NSString *path = [NSString stringWithFormat:@"save_%@.jpg", @"demo"];
    NSString *jpgPath = [dirPath stringByAppendingPathComponent:path]; 
    BOOL isSucc = [UIImageJPEGRepresentation(bgImg, 1.0) writeToFile:jpgPath atomically:YES];
    NSLog(@"%@ write photo %@!", jpgPath, isSucc?@"SUCC":@"FAIL");
}

1 个答案:

答案 0 :(得分:0)

使用小图像,无法以正确的方式缩放到更大的图像,您将始终经历模糊,嘈杂的图像但是如果图像可以具有可拉伸的重复部分,则可以拉伸图像的内部而不创建一个新的。 UIImage中有两个API叫做:
– resizableImageWithCapInsets:(仅限ios5)
– stretchableImageWithLeftCapWidth:topCapHeight:(在iOS 5.0中已弃用)
如果找到正确的插图,则可以避免创建新图像,基本上与用于在消息应用程序中创建气泡的系统相同。气球非常小,但它有一个可伸缩的区域,可以保持纵横比 由于图像非常简单,您还可以考虑使用Quartz函数绘制它来创建一个rect路径,路径“几乎”独立于res,只需要将它们缩放到正确的大小。