我正在尝试合并2 UIImageViews
并将它们保存为1.最顶层的图像是静态“框架”,下部图像是可旋转/可缩放的。
我的问题是照片需要保存为640 x 960
,但是,2张图片所在的实际视图是320 x 480
(因此它在用户屏幕上正确显示)。当这两个图像组合在一起时,它们会保存在640 x 960
视图中,但是,这两个图像本身会合并为320 x 480
(如下图所示)。
CGSize deviceSpec;
if ( IDIOM == IPAD ) { deviceSpec =CGSizeMake(768,1024); } else { deviceSpec =CGSizeMake(640,960); }
UIGraphicsBeginImageContext( deviceSpec );
UIView * rendered = [[UIView alloc] init];
[[rendered layer] setFrame:CGRectMake(0,0,deviceSpec.width,deviceSpec.height)];
[[rendered layer] addSublayer:[self.view layer]];
[[rendered layer] renderInContext:UIGraphicsGetCurrentContext()];
UIImage * draft = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
还应该提到我使用以下方法保存图像:
ALAssetsLibrary * library = [[[ALAssetsLibrary alloc] init] autorelease];
[library writeImageToSavedPhotosAlbum: draft.CGImage orientation:ALAssetOrientationUp
completionBlock: ^(NSURL *assetURL, NSError *error)
{
if (error) {
NSLog(@"ALAssetLibrary error - %@", error);
} else {
NSLog(@"Image saved: %@", assetURL);
}
}];
请注意,整个白色区域实际为640 x 960
,而2张图片为320 x 480
。
注意:这里的实际图像是640x960(整个区域),其中实际图像(照片)是320x480,这是原始图层框架的实际尺寸。
答案 0 :(得分:0)
为了支持不同的比例,我使用以下代码:
// If you specify a value of 0.0, the scale factor is set to the scale factor of the device’s main screen.
UIGraphicsBeginImageContextWithOptions(compositeView.frame.size, compositeView.opaque, scale);
[compositeView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
因此,您需要将UIGraphicsBeginImageContext
替换为UIGraphicsBeginImageContextWithOptions