gpt4 book ai didi

iphone - 在 Core Graphics 中创建拼贴的多个剪切矩形

转载 作者:太空狗 更新时间:2023-10-30 03:42:08 36 4
gpt4 key购买 nike

我正在创建一个结合其他图像元素的拼贴画。这里有一些 ASCII 艺术来解释我在做什么:

Given images A, B and C,
AAA, BBB, CCC
AAA, BBB, CCC
AAA, BBB, CCC

I take part of A, part of B and part of C as columns:

Axx, xBx, xxC
Axx, xBx, xxC
Axx, xBx, xxC

...and combine them in one image like this:

ABC
ABC
ABC

where the first 1/3rd of the image is a colum of A's pic, the middle is a column of B's pic and the last is a column of C's pic.

我写了一些代码,但它只显示第一列而不显示其余部分……我想我必须以某种方式清除剪辑,但我不确定该怎么做,或者这是否是最好的方法。

+ (UIImage *)collageWithSize:(NSInteger)size fromImages:(NSArray *)images {
NSMutableArray *selectedImages = [NSMutableArray array];
[selectedImages addObjectsFromArray:images];

// use the selectedImages for generating the thumbnail
float columnWidth = (float)size/(float)[selectedImages count];

//create a context to do our clipping in
UIGraphicsBeginImageContext(CGSizeMake(size, size));
CGContextRef currentContext = UIGraphicsGetCurrentContext();

for (int i = 0; i < [selectedImages count]; i++) {
// get the current image
UIImage *image = [selectedImages objectAtIndex:i];

//create a rect with the size we want to crop the image to
CGRect clippedRect = CGRectMake(i*columnWidth, 0, columnWidth, size);
CGContextClipToRect(currentContext, clippedRect);

//create a rect equivalent to the full size of the image
CGRect drawRect = CGRectMake(0, 0, size, size);

//draw the image to our clipped context using our offset rect
CGContextDrawImage(currentContext, drawRect, image.CGImage);
}

//pull the image from our cropped context
UIImage *collage = UIGraphicsGetImageFromCurrentImageContext();

//pop the context to get back to the default
UIGraphicsEndImageContext();

//Note: this is autoreleased
return collage;
}

我做错了什么?

PS 图像也被颠倒了。

最佳答案

CGContextClipToRect 将当前剪辑矩形与提供的参数相交。因此,第二次调用它时,实际上是将剪裁区域变为空。

如果不恢复图形状态,就无法恢复裁剪区域。因此,在循环顶部调用 CGContextSaveGState,在循环底部调用 CGContextRestoreGState

上下颠倒的部分可以通过调整当前的变换矩阵来修复:调用CGContextTranslateCTM移动原点,然后调用CGContextScaleCTM翻转y轴。

关于iphone - 在 Core Graphics 中创建拼贴的多个剪切矩形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2234668/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com