我将图像存储为SQLite中的斑点。其他工具,例如用于SQLite的DB浏览器,显示图像本身未升级。
我使用以下代码从原始图像按比例缩小了它们。
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照原样显示图像?
Flutter使用逻辑像素而不是物理像素。
设备像素也称为物理像素。逻辑像素也称为与设备无关或与分辨率无关的像素。
要在物理像素和逻辑像素之间转换,可以使用devicePixelRatio。
每个逻辑像素的设备像素数。此数字可能不是2的幂。实际上,它甚至可能不是整数。例如,Nexus 6的设备像素比为3.5。
MediaQuery.of(context).devicePixelRatio