【发布时间】:2020-06-16 16:15:04
【问题描述】:
我在 SQLite 中将图像存储为 blob。 DB Browser for SQLite 等其他工具显示图像本身没有放大。
我使用以下代码从原始图像按比例缩小它们。
final thumbnailData = encodeJpg(copyResize(
decodeImage(imageData),
width: 400,
interpolation: Interpolation.average
));
在 Flutter 中显示时,它们明显放大了。
@override
Widget build(BuildContext context) {
return Image.memory(_getThumbnailData());
}
Image.memory() 有一个scale 参数,默认为1.0。手动设置也无济于事。
我必须将其设置为某个估计值,例如 2.0 才能获得正确的比例,但我不明白为什么,2.0 实际上是“未缩放”还是略微偏离。
如何告诉 Flutter 以原样显示图像?
【问题讨论】:
-
只是为了澄清;正在尝试说例如 400 x 400 图像显示为 800 x 800??
-
是的,模拟器的屏幕截图是 1080 像素宽。图像有 400 像素宽,显示为 800 像素(几乎是整个屏幕),因此非常放大。对于看起来放大到 400 像素的 200 像素宽的图像也是如此。
-
flutter 使用逻辑像素而不是硬件像素。因此,根据设备的显示密度,400x400 图像的显示可能会有所不同。
-
谢谢,“逻辑像素”把我带到了
MediaQuery.of(context).devicePixelRatio。将其用作Image.memory()的scale属性可以正确显示图像。 -
太好了。我可以将其发布为答案吗?
标签: flutter flutter-image