如何使用cgcontext引用动态地将100 X 100图像制作成1000X 1000

时间:2012-10-17 09:20:45

标签: iphone objective-c uiimageview

我想把小图像(100 * 100)变成大图像(1000 * 1000),我这样使用,但这是最糟糕的做法。

这里我在视图中添加了它,但我想在上下文中绘制并保存它..

for(int j=0;j<5;j++)
      {
          for(int i=0;i<5;i++)
           {
         UIImageView* imgView = [[UIImageView alloc] initWithImage:  [UIImageimageNamed:@"images.jpeg"]];
          [imgView drawRect:CGRectMake(xCoord,yCoord,imgView.frame.size.width, imgView.frame.size.height)]; 
         yCoord =imgView.frame.size.height*j;

         [self.view addSubview:imgView];
          xCoord += imgView.frame.size.width;

          }
           yCoord=0;
           xCoord = 0.0;
       }

我想使用上下文绘制rect来完成它。 CGContextDrawImage如何处理这个请帮忙。谢谢你提前....

3 个答案:

答案 0 :(得分:2)

如果您希望在上下文中使用[image drawAsPatternInRect:rect]

编辑:

此方法将生成给定大小的新图像。重复绘制图像,直到填满整个上下文。

UIImage * TiledImage(UIImage *tile, CGSize size) {
    UIGraphicsBeginImageContext(size);
    [tile drawAsPatternInRect:CGRectMake(0,0, size.width, size.height)];
    UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return img;
}

在您的情况下,只需写下:UIImage *bigImage = TiledImage([UIImageimageNamed:@"images.jpeg"], CGSizeMake(1000,1000));现在您拥有1000x1000像素图像。

答案 1 :(得分:0)

这看起来像1000x1000 UIView并将其backgroundColor属性设置为

[UIColor colorWithPatternImage:@"images.jpeg"];

如果您想在上下文中绘图:

CGContextRef context = UIGraphicsBeginImageContext(imageSize);
[patternImage drawAsPatternInRect:imageRect];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

答案 2 :(得分:0)

您可以通过这种方式将背景图案应用于任何视图:

UIImage *pattern = [UIImage imageNamed:@"yourimage-pattern.png"];
yourView.backgroundColor = [UIColor colorWithPatternImage:pattern];

我认为这比你现在的方法更容易。

编辑:

您仍然可以在上下文中渲染您的视图并截取它的截图,如果这是您想要的:

UIGraphicsBeginImageContext(CGSizeMake(1000,1000)));
[yourView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

请确保您使用的是QuartzCore lib,并为此代码段引用了头文件#import <QuartzCore/QuartzCore.h>