You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter中如何在图片本体上绘制矩形而非添加视图层

解决方案

你可以直接使用image包提供的绘图API修改图片本体,无需手动批量修改像素数组,这种方式更简洁可靠。

基于你已有的代码,补充绘制矩形的逻辑如下:

import 'package:image/image.dart' as img;
import 'package:flutter/services.dart' show rootBundle;

// 在你的异步方法内执行以下逻辑
ByteData byteData = await rootBundle.load('assets/images/maps/map.jpg');
Uint8List bytes = byteData.buffer.asUint8List();
img.Image photo = img.decodeImage(bytes)!;

// 定义矩形参数:坐标、尺寸、颜色
final rectColor = img.ColorRgba8(255, 0, 0, 128); // 半透明红色,参数为RGBA(0-255)
final targetRect = img.Rectangle(x1: 50, y1: 50, x2: 200, y2: 150); // x1/y1是左上角,x2/y2是右下角

// 绘制填充矩形
img.fillRect(photo, targetRect, rectColor);
// 如果只需要绘制矩形边框,替换为下面的方法
// img.drawRect(photo, targetRect, rectColor);

// 将修改后的图片转为可用于显示的Uint8List
Uint8List modifiedImageBytes = img.encodeJpg(photo);

// 后续可通过Image.memory(modifiedImageBytes)展示修改后的图片

关键说明:

  • fillRect用于绘制带填充的矩形,drawRect仅绘制矩形边框
  • 修改后的photo对象就是已编辑的图片本体,编码后可直接用于显示或保存

内容的提问来源于stack exchange,提问作者A9191

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 11:51:32