图像大小 vs sourceSize 奇怪的事情
Image size vs sourceSize strange things
我们遇到了一个奇怪的问题,即在 Retina 显示屏下图像模糊。图像的左侧部分 - 之前,右侧部分 - 修复后。
我们的 QML 代码使用此代码显示图像:
Image {
anchors.verticalCenter: parent.verticalCenter
sourceSize.width: 25
sourceSize.height: 25
source: preview.url
}
我尝试将 sourceSize
乘以 Screen.devicePixelRatio
- 图片变大了,放不下了。
然后我将 sourceSize.width
替换为 width
,height
也是如此。所以:
Image {
anchors.verticalCenter: parent.verticalCenter
width: 25
height: 25
source: preview.url
}
现在可以正常使用了。
我的问题是:
是否需要sourceSize
乘以devicePixelRatio
?还是自动管理?它似乎是为 PNG 自动管理的,而不是为 SVG 管理的。
如果它已经为 PNG 自动管理(这些图像 preview.url 是 PNG)那么为什么它会模糊?原始 PNG 图像的大小为 64x64 像素。
为什么我用sourceSize
乘以devicePixelRatio
后图像变大了?
加法#1。我在图像的 URL 中使用 data://
方案。即
QString url("data:");
url += imageMimeType;
url += ";base64,";
url += imageData.toBase64();
虽然参考了我给您的另一个答案 , my understanding of the Qt code is that, outside from the cases described here,但 Qt 没有缩放该值。所以我的理解似乎与你在 1 中的陈述相反。是什么证据使你得出该陈述?
假设这个概念是正确的(我可能不正确),第 2 点的原因是 Qt 正在加载适合 1 倍缩放的大小。但是对于更高的因素,存在质量损失。如果你在视网膜上,那么你应该调整那个值,或者提供@2x 版本。
至于第3点,原因可能在文档中:“如果未指定宽度和高度属性,图像会自动使用加载图像的大小”。因此,如果将加载图像的大小加倍,则元素的大小也会加倍,因为您没有明确设置宽度和高度。
设置宽度和高度解决了问题,因为图像是以完整尺寸加载的,因此缩放后可以绘制出合适的质量。
如果我对Qt代码的理解有误,希望大家指正。
我们遇到了一个奇怪的问题,即在 Retina 显示屏下图像模糊。图像的左侧部分 - 之前,右侧部分 - 修复后。
我们的 QML 代码使用此代码显示图像:
Image {
anchors.verticalCenter: parent.verticalCenter
sourceSize.width: 25
sourceSize.height: 25
source: preview.url
}
我尝试将 sourceSize
乘以 Screen.devicePixelRatio
- 图片变大了,放不下了。
然后我将 sourceSize.width
替换为 width
,height
也是如此。所以:
Image {
anchors.verticalCenter: parent.verticalCenter
width: 25
height: 25
source: preview.url
}
现在可以正常使用了。
我的问题是:
是否需要
sourceSize
乘以devicePixelRatio
?还是自动管理?它似乎是为 PNG 自动管理的,而不是为 SVG 管理的。如果它已经为 PNG 自动管理(这些图像 preview.url 是 PNG)那么为什么它会模糊?原始 PNG 图像的大小为 64x64 像素。
为什么我用
sourceSize
乘以devicePixelRatio
后图像变大了?
加法#1。我在图像的 URL 中使用 data://
方案。即
QString url("data:");
url += imageMimeType;
url += ";base64,";
url += imageData.toBase64();
虽然参考了我给您的另一个答案
假设这个概念是正确的(我可能不正确),第 2 点的原因是 Qt 正在加载适合 1 倍缩放的大小。但是对于更高的因素,存在质量损失。如果你在视网膜上,那么你应该调整那个值,或者提供@2x 版本。
至于第3点,原因可能在文档中:“如果未指定宽度和高度属性,图像会自动使用加载图像的大小”。因此,如果将加载图像的大小加倍,则元素的大小也会加倍,因为您没有明确设置宽度和高度。
设置宽度和高度解决了问题,因为图像是以完整尺寸加载的,因此缩放后可以绘制出合适的质量。
如果我对Qt代码的理解有误,希望大家指正。