gpt4 book ai didi

iphone - 通过使用低分辨率图像然后交换高分辨率图像来加速 UIImagePickerController

转载 作者:行者123 更新时间:2023-12-01 17:23:40 24 4
gpt4 key购买 nike

有一个很棒的 wiki 关于 image loading from the camera picker .这让我意识到以全分辨率拍摄图像的成本。

目前,当一张照片被选中时,我推送一个新的 View Controller 并以全分辨率显示图像。插入 View 是一种非常缓慢且不稳定的体验(大约 1 fps!),我想平滑它。与在 Instagram 上挑选照片相比,我注意到他们使用的是低分辨率图像,然后换成了完整图像。 (我需要完整的 res 图像,因为用户应该能够缩放和平移)

我想要的想法是这样的:

- (void)imagePickerController:(UIImagePickerController *)picker
didFinishPickingMediaWithInfo:(NSDictionary *)info
{

UIImage* fullImage = [info objectForKey:UIImagePickerControllerOriginalImage];

// Push a view controller and give it the image.....
}

- (void) viewDidLoad {

CGSize smallerImageSize = _imageView.bounds;
UIImage* smallerImage = [MyHelper quickAndDirtyImageResize:_fullImage
toSize:smallerImageSize];

// Set the low res image for now... then later swap in the high res
_imageView.image = smallerImage;

// Swap in high res image async
// This is the part im unsure about... Im sure UIKit isn't thread-safe!
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW, NULL), ^{
_imageView.image = _fullImage;
});
}

我认为 UIImage 在使用之前不是内存映射的。因此,它不会减慢速度,直到将其提供给 imageView。它是否正确?

我认为图像解码已经由系统异步完成,但是,它仍然会在加载时大大减慢手机的速度。

有没有办法执行在非常低优先级的背景队列中显示图像所需的一些工作?

最佳答案

您正在尝试以最复杂的方式做事:)
为什么不在推送 View Controller 之前准备好小图像并将其传递给它们呢?看看这段代码:

- (void)imagePickerController:(UIImagePickerController *)picker
didFinishPickingMediaWithInfo:(NSDictionary *)info
{

UIImage *fullImage = [info objectForKey:UIImagePickerControllerOriginalImage];
UIImage *smallImage = [fullImage imageScaledToSize:self.view.bounds];

// Push a view controller and give it BOTH images
}

// And in your pushed view controller

- (void)viewDidLoad
{
_imageView.image = self.smallImage;
}

- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];

_imageView.image = self.fullImage;
}

最主要的是 viewDidAppear:将在动画完成后立即调用,因此您可以在此处切换图像而无需担心。

关于iphone - 通过使用低分辨率图像然后交换高分辨率图像来加速 UIImagePickerController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12709111/

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