gpt4 book ai didi

ios - 以编程方式为 PhotoScroller 平铺图像

转载 作者:行者123 更新时间:2023-11-28 23:09:39 25 4
gpt4 key购买 nike

我有一个从 S3 存储桶下载大量图片的应用程序。下载它们后,我会使用以下代码平铺它们。

- (void)saveTilesOfSize:(CGSize)size 
forImage:(UIImage*)image
toDirectory:(NSString*)directoryPath
usingPrefix:(NSString*)prefix
{
CGFloat cols = [image size].width / size.width;
CGFloat rows = [image size].height / size.height;

NSLog(@"cols: %f rows: %f", cols, rows);

int fullColumns = floorf(cols);
int fullRows = floorf(rows);

CGFloat remainderWidth = [image size].width -
(fullColumns * size.width);
CGFloat remainderHeight = [image size].height -
(fullRows * size.height);


if (cols > fullColumns) fullColumns++;
if (rows > fullRows) fullRows++;

CGImageRef fullImage = [image CGImage];

int tilecount = 0;

for (int y = 0; y < fullRows; ++y) {
for (int x = 0; x < fullColumns; ++x) {
tilecount++;
CGSize tileSize = size;
if (x + 1 == fullColumns && remainderWidth > 0) {
// Last column
tileSize.width = remainderWidth;
}
if (y + 1 == fullRows && remainderHeight > 0) {
// Last row
tileSize.height = remainderHeight;
}

CGImageRef tileImage = CGImageCreateWithImageInRect(fullImage,
(CGRect){{x*size.width, y*size.height},
tileSize});
NSData *imageData = UIImagePNGRepresentation([UIImage imageWithCGImage:tileImage]);
NSString *path = [NSString stringWithFormat:@"%@/%@%d_%d.png",
directoryPath, prefix, x, y];
[imageData writeToFile:path atomically:NO];

float prg = tilecount/200.0;
[self performSelectorOnMainThread:@selector(setTileProgress:) withObject:[[NSNumber alloc] initWithFloat:prg] waitUntilDone:NO];
}
}
[self performSelectorOnMainThread:@selector(setTileProgress:) withObject:[[NSNumber alloc] initWithFloat:100.0] waitUntilDone:NO];
}

这可以很好地生成最大缩放图 block ,但我还需要生成缩放图 block 。我想我可以采用 UIImage 并像下面的代码一样缩放它,然后简单地将缩放后的图像连同缩放参数一起传递给修改后的 saveTilesOfSize 方法以生成其他缩放图像(500、250、125)。

UIImage *scaledImage = [UIImage imageWithCGImage:[originalImage CGImage] scale:0.125 orientation:UIImageOrientationUp];

这会如我所愿吗?

最佳答案

是的,那没有用。 initWithCGImage:scale:orientation 仅更改 size 属性报告的大小,它不会对图像进行任何实际缩放。

我最终选择了这条路线:
http://iosdevelopertips.com/graphics/how-to-scale-an-image-using-an-objective-c-category.html

像魅力一样工作。

有状态

关于ios - 以编程方式为 PhotoScroller 平铺图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8608907/

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