Flutter上boxfit后如何在屏幕上获取真实图像尺寸

问题描述 投票:0回答:2

我使用以下代码在屏幕上绘制图像。我想在该图像的顶部绘制一个叠加层。然而,当图像高度较大时,boxfit 会减小图像宽度。发生这种情况时,我无法计算图像顶部和左侧的绘制位置。图像的宽度和高度仍然等于屏幕尺寸,但是图像宽度是居中绘制,两侧有间隙,明显小于屏幕尺寸。

有没有办法计算图像 bixfit 后的准确尺寸和顶部、左侧位置。

return Image.memory(
     imageBytes,
     width: reqWidth,
     height: reqHeight,
     filterQuality: FilterQuality.high,
     fit: BoxFit.fitHeight,
);
flutter flutter-layout
2个回答
0
投票

使用

applyBoxFit(BoxFit.fitHeight, widgetSize, imageSize)

地点:

  • widgetSize - 渲染图像小部件的大小。在你的情况下,它是
    Size(reqWidth, reqHeight)
  • imageSize - 图像资源的大小(以像素为单位)。 如何获取图像尺寸

参考资料: 申请BoxFit


0
投票

我面临着与您类似的问题,并设法通过

FittedBox
Stack
的组合来解决它。
Stack
FittedBox
的任何子级都具有相同的坐标空间:

@override
  Widget build(BuildContext context) {
    return SizedBox.expand(
      child: FittedBox(
        fit: BoxFit.cover,
        child: Stack(
          children: [
            Image.network('test.jpg'),
            Positioned(
              top: 100,
              left: 100,
              child: Container(
                color: Colors.amberAccent,
                width: 100,
                height: 100,
              ),
            ),
          ],
        ),
      ),
    );
  }

容器小部件现在相对于图像定位在应用框适合之后

© www.soinside.com 2019 - 2024. All rights reserved.