gpt4 book ai didi

objective-c - 从 web 服务器为视网膜显示 iOS 下载图像

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:50:49 24 4
gpt4 key购买 nike

我正在使用以下代码从网络服务器下载图像以显示在我的 iOS 应用程序的表格 View 中:

NSURL *url = [NSURL URLWithString:[imageArray objectAtIndex:indexPath.row]];
UIImage *myImage = [UIImage imageWithData:[NSData dataWithContentsOfURL:url]];
cell.imageView.image = myImage;

ImageView 是 60x60 占位符和 120x120 的视网膜显示器。我假设用户使用的是 iPhone 4。但是,如果我将图像的大小设置为 120x120,它并不能解决问题,它对于 imageview 来说太大了。如果我将图像大小调整为 60x60,即在网络服务器上,则图像适合但有点模糊。有人知道如何解决这个问题吗?

谢谢!

最佳答案

首先让我们同意您的 UIImageView 是 60x60 points,这意味着标准显示为 60x60 pixels 和 120x120 pixels> 用于视网膜显示器。

对于 60x60 点的 UIImageView,对于标准显示,图像在 scale 1.0 时应为 60x60 像素,在 scale 2.0 时应为 120x120 像素用于视网膜显示。这意味着您的 UIImage 应始终具有 60x60 点的大小,但应根据显示分辨率具有不同的比例

从服务器获取图像数据时,您应该首先检查设备屏幕的比例,然后请求合适的图像大小(以像素为单位),如下所示:

if ([UIScreen mainScreen].scale == 1.0) {
// Build URL for 60x60 pixels image
}
else {
// Build URL for 120x120 pixels image
}

然后您应该将图像数据放入大小为 60x60 点的 UIImage 中,以适当的 scale:

NSData *imageData = [NSData dataWithContentsOfURL:url];
CFDataRef cfdata = CFDataCreate(NULL, [imageData bytes], [imageData length]);
CGDataProviderRef imageDataProvider = CGDataProviderCreateWithCFData (cfdata);
CGImageRef imageRef = CGImageCreateWithJPEGDataProvider(imageDataProvider, NULL, true, kCGRenderingIntentDefault);
UIImage *image = [[UIImage alloc] initWithCGImage:imageRef
scale:[UIScreen mainScreen].scale
orientation:UIImageOrientationUp];
CFRelease (imageRef);
CFRelease (imageDataProvider);
CFRelease(cfdata);

希望这对您有所帮助。

关于objective-c - 从 web 服务器为视网膜显示 iOS 下载图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10509392/

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