我想把小图像(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
如何处理这个请帮忙。谢谢你提前....
答案 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>
。