gpt4 book ai didi

cocoa - 为什么 IKImageBrowserView 调整图像大小的速度比我快得多?

转载 作者:行者123 更新时间:2023-12-03 16:59:40 24 4
gpt4 key购买 nike

这是我的图像调整大小代码:

CALayer *newCALayer = [[CALayer layer] retain];
NSImage* image = [[NSImage alloc] initWithData:[NSData dataWithContentsOfFile:path]];
CGImageRef newCGImageFullResolution = [image CGImageForProposedRect:nil context:nil hints:nil];
CGContextRef context = CGBitmapContextCreate(NULL, drawRect.size.width, drawRect.size.height,
CGImageGetBitsPerComponent(newCGImageFullResolution),
CGImageGetBytesPerRow(newCGImageFullResolution),
CGImageGetColorSpace(newCGImageFullResolution),
CGImageGetAlphaInfo(newCGImageFullResolution));
CGContextDrawImage(context, CGRectMake(0, 0, drawRect.size.width, drawRect.size.height), newCGImageFullResolution);
CGImageRef scaledImage = CGBitmapContextCreateImage(context);
newCALayer.contents = (id)scaledImage;
CGImageRelease(scaledImage);
newCALayer.contentsGravity = kCAGravityResizeAspect;
newCALayer.opacity = 0.0;
newCALayer.anchorPoint = CGPointMake(0.0f,0.0f);
newCALayer.frame = CGRectMake( 0.0,
0.0,
[Singleton sharedSingleton].fullscreenRect.size.width,
[Singleton sharedSingleton].fullscreenRect.size.height);
[newCALayer setAutoresizingMask:kCALayerWidthSizable | kCALayerHeightSizable];
//CGImageRelease(cgImageFullResolution); (bonus points if you can explain why I can't release this! I mean, I can release the scaled image ok??)
CGContextRelease(context);
[image release];

我在后台线程中执行所有这些操作,以便预加载图片,以便我的 GUI 感觉敏捷。需要做一些工作来实现同步以及未设置的内容,以便 CALayers 最终出现在 View 中。

但我相信描述它有多快的术语应该是“它是一只狗”。

与 IKImageView 相比 - 那东西弹出图像缩略图的速度比我滚动的速度还要快。

有人对如何比我现在做的更好地处理这个问题有一些建议吗?

换句话说,我的问题是我想要一个超快的用户体验。我相信实现这一点的方法是通过将东西预加载到 CALayers(这可能是错误的?我尝试了 NSImageView 和一些 IK 的东西,但至少 CALayer 比那更好)。

最佳答案

ImageKit 可能正在使用 CGImageSourceCreateThumbnailAtIndex()快速获取适合目标的图像,而不是读取整个图像文件。

关于cocoa - 为什么 IKImageBrowserView 调整图像大小的速度比我快得多?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4846205/

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