0

我在 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 按原样显示图像?

4

1 回答 1

1

Flutter 使用逻辑像素而不是物理像素。

设备像素也称为物理像素。逻辑像素也称为与设备无关或与分辨率无关的像素。

如何在物理像素和逻辑像素之间进行转换?

要在物理像素和逻辑像素之间进行转换,可以使用devicePixelRatio

每个逻辑像素的设备像素数。这个数字可能不是二的幂。事实上,它甚至可能不是整数。例如,Nexus 6 的设备像素比为 3.5。

MediaQuery.of(context).devicePixelRatio
于 2020-03-04T08:55:55.857 回答