在 Flutter 中放大图像

Images being upscaled in Flutter

我在 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() 有一个默认为 1.0scale 参数。手动设置它也无济于事。

我必须将它设置为一些估计值,如 2.0 以获得正确的比例,但我不明白为什么 2.0 实际上是 "unscaled" 或仍然略微偏离.

如何让 Flutter 按原样显示图像?

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

Device pixels are also referred to as physical pixels. Logical pixels are also referred to as device-independent or resolution-independent pixels.

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

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

The number of device pixels for each logical pixel. This number might not be a power of two. Indeed, it might not even be an integer. For example, the Nexus 6 has a device pixel ratio of 3.5.

MediaQuery.of(context).devicePixelRatio