iPhone imageview打印屏幕 - 从imageview创建新图像

时间:2011-04-13 09:11:49

标签: iphone cocoa-touch image imageview screen-capture

我能以某种方式以编程方式制作一个ImageView的打印屏幕吗?

假设我正在显示不同尺寸的大照片,自动缩放(AspectFit)到屏幕尺寸,居中和黑色背景。我想拍摄包含黑色imageview背景的缩放图像,以便使用320x480图像。

那么如何将350x600图像更改为320x480并使用黑色边框并且没有任何其他元素(按钮,标签)覆盖此imageview?在Android上我只是捕获屏幕缓冲区,但对于iPhone我真的不知道该怎么做......

提前致谢!

3 个答案:

答案 0 :(得分:5)

UIGraphicsBeginImageContext(<specify your size here as CGRect>);
[<yourImageView or view you want to convert in image>.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();

输出viewImage。由于你想要一个黑色边框,所以你可以有这样的逻辑,你将imageView添加到一个UIView上,blackBackroundColor为黑色(请记住这个视图的框架应该大于你的imageView的框架,每个边框都有一些边距这样你就可以拥有你的边界了......现在在[<yourView>.layer renderInContext:UIGraphicsGetCurrentContext()];中使用这种方法。

答案 1 :(得分:1)

    UIGraphicsBeginImageContextWithOptions(CGSizeMake(320, 480), NO, 0.0);
    CGContextRef context = UIGraphicsGetCurrentContext();
    [self.view.layer renderInContext:context];
    yourImageViewToStoreCaptured = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

希望这会有所帮助。

答案 2 :(得分:1)

-(IBAction)saveViewToPhotoLibrary:(id)sender 
{
    CGRect screenRect = [[UIScreen mainScreen] bounds];
    UIGraphicsBeginImageContext(screenRect.size);

    CGContextRef ctx = UIGraphicsGetCurrentContext();
    [[UIColor blackColor] set];
    CGContextFillRect(ctx, screenRect);

    [self.view.layer renderInContext:ctx];

    UIImage *screenImage = UIGraphicsGetImageFromCurrentImageContext();
    UIImageWriteToSavedPhotosAlbum(screenImage,nil,nil,nil);                                         
    //fill cordinat in place of nil if u want only image comes and not button......ok thanks vijay// 
    UIGraphicsEndImageContext();    
}