Swift,来自 URL 的图片 - 在 Ipad 模拟器上质量很好,但在 Iphone 4s 模拟器上质量很差
Swift, image from URL - Good quality on Ipad simulator, but very bad quality on Iphone 4s simulator
我对这件事感到很沮丧。想了几天都没有结果。
问题很清楚了。我有一个固定宽度和高度 65x65px 的图像视图。我碰巧在某个网络服务器上有一张相同尺寸 (65x65px) 的图片。
我正在做的是,将 URL 的图像加载到图像视图中。 (下面会附上代码)
一切正常,除了图像质量非常差,我不知道为什么。尝试了各种方法,但似乎无法弄清楚。
会注意到从图像集(本地)加载的图像质量非常好(它们没有问题。只有来自 URLs 的图像有)
2 种行为引起了我的注意:
1) 如果我制作一个宽度和高度为 :65px 的按钮,并将我从 URL 获取的图像作为按钮的背景。它的质量是完美的。
2) 如果我使用更大的模拟器,质量会越来越好。它在 Iphone 6 plus 模拟器上表现一般(仍然有点差),但在 Ipad/Ipad2
上几乎完美
我用来从 URL 获取图像并将其加载到 ImageView 中的代码是:
let imgUrl = NSURL(string: "http://imageurl")
let data = NSData(contentsOfURL: imgUrl!)
cell.myImageView.image = UIImage(data: data!)
我已经尝试过各种绝望的尝试,比如尝试使用不在 table 单元格中的图像视图。不同的图像,不同的尺寸,甚至将图像设置为背景都有效,但我不认为这是解决方案...
我开始认为这是一个模拟器问题..但我不想发布有这样问题的应用程序(如果不是模拟器问题)
另一件事也许值得一提,但我怀疑。我正在使用具有远程访问权限的 mac。从未在我面前的 mac 上测试过,但我怀疑这是否相关,因为本地的其他图像质量很好,大型模拟器也质量很好。
任何关于此事的意见将不胜感激。
此致。
编辑:我正在使用 xCode 6.3.x
编辑:经过进一步调查,我开始猜测这是一个 scaling/zoom 问题。我认为问题是,当我打开 Iphone4s 时,图像只是缩放(整个模拟器 window 被放大/缩放以填满屏幕)。我在 Iphone4s 和 Ipad2 模拟器上检查了 "scale",两者都是 100%。然而,Ipad2 上的同一张图片比 Iphone4S(在我的屏幕上)上的同一张图片小两倍,尽管两者的宽度和高度都是 65px。所以我想这是一个模拟器问题?我怎么能这么确定呢?甚至知道哪个版本是正确的。
编辑:
看来问题如上所述。 Iphone4S 没有显示图像的实际大小,就像放大了一样。您可以阅读下面的评论以获取更多信息。 remus建议的测试结果(非常感谢您的帮助先生)
您在哪个国家/您使用的是哪个服务提供商?一些服务提供商将拦截图形并根据用户代理降低其质量。尝试使用 SSL (https://
) urls 来防止这种情况发生。
您可以通过在所有设备上的 Safari 中加载图像 url 并进行比较来验证这一理论。
我相信这一定是由于 iPhone 4S 上的视网膜显示屏。 iPad 2 没有视网膜显示屏,因此图像以实际比例显示。
在iPhone4(及以上)上,retina显示的密度是其两倍,因此需要将图像缩放2倍才能以相同的尺寸显示。
尝试传送两倍于 iPhone 的图像,您应该会看到更好的结果。
我对这件事感到很沮丧。想了几天都没有结果。
问题很清楚了。我有一个固定宽度和高度 65x65px 的图像视图。我碰巧在某个网络服务器上有一张相同尺寸 (65x65px) 的图片。
我正在做的是,将 URL 的图像加载到图像视图中。 (下面会附上代码)
一切正常,除了图像质量非常差,我不知道为什么。尝试了各种方法,但似乎无法弄清楚。
会注意到从图像集(本地)加载的图像质量非常好(它们没有问题。只有来自 URLs 的图像有)
2 种行为引起了我的注意:
1) 如果我制作一个宽度和高度为 :65px 的按钮,并将我从 URL 获取的图像作为按钮的背景。它的质量是完美的。
2) 如果我使用更大的模拟器,质量会越来越好。它在 Iphone 6 plus 模拟器上表现一般(仍然有点差),但在 Ipad/Ipad2
上几乎完美我用来从 URL 获取图像并将其加载到 ImageView 中的代码是:
let imgUrl = NSURL(string: "http://imageurl")
let data = NSData(contentsOfURL: imgUrl!)
cell.myImageView.image = UIImage(data: data!)
我已经尝试过各种绝望的尝试,比如尝试使用不在 table 单元格中的图像视图。不同的图像,不同的尺寸,甚至将图像设置为背景都有效,但我不认为这是解决方案...
我开始认为这是一个模拟器问题..但我不想发布有这样问题的应用程序(如果不是模拟器问题)
另一件事也许值得一提,但我怀疑。我正在使用具有远程访问权限的 mac。从未在我面前的 mac 上测试过,但我怀疑这是否相关,因为本地的其他图像质量很好,大型模拟器也质量很好。
任何关于此事的意见将不胜感激。
此致。
编辑:我正在使用 xCode 6.3.x
编辑:经过进一步调查,我开始猜测这是一个 scaling/zoom 问题。我认为问题是,当我打开 Iphone4s 时,图像只是缩放(整个模拟器 window 被放大/缩放以填满屏幕)。我在 Iphone4s 和 Ipad2 模拟器上检查了 "scale",两者都是 100%。然而,Ipad2 上的同一张图片比 Iphone4S(在我的屏幕上)上的同一张图片小两倍,尽管两者的宽度和高度都是 65px。所以我想这是一个模拟器问题?我怎么能这么确定呢?甚至知道哪个版本是正确的。
编辑: 看来问题如上所述。 Iphone4S 没有显示图像的实际大小,就像放大了一样。您可以阅读下面的评论以获取更多信息。 remus建议的测试结果(非常感谢您的帮助先生)
您在哪个国家/您使用的是哪个服务提供商?一些服务提供商将拦截图形并根据用户代理降低其质量。尝试使用 SSL (https://
) urls 来防止这种情况发生。
您可以通过在所有设备上的 Safari 中加载图像 url 并进行比较来验证这一理论。
我相信这一定是由于 iPhone 4S 上的视网膜显示屏。 iPad 2 没有视网膜显示屏,因此图像以实际比例显示。
在iPhone4(及以上)上,retina显示的密度是其两倍,因此需要将图像缩放2倍才能以相同的尺寸显示。
尝试传送两倍于 iPhone 的图像,您应该会看到更好的结果。