我们可以在 Flutter 中裁剪带有点和大小的图像吗?
Posted
技术标签:
【中文标题】我们可以在 Flutter 中裁剪带有点和大小的图像吗?【英文标题】:Can we crop an image with point and size in Flutter? 【发布时间】:2019-08-22 04:04:55 【问题描述】:我正在编写一个人脸检测应用程序,我想用该人脸的边界框裁剪在屏幕上检测到的人脸。
我一直搜索,但只能裁剪宽度高度和纵横比。
我不想像其他图像裁剪插件那样手动裁剪,因为它们也可以裁剪宽度高度和纵横比。
【问题讨论】:
【参考方案1】:您可以为此使用https://github.com/brendan-duncan/image。
对于您的情况,请尝试使用copyCrop
。
https://github.com/brendan-duncan/image/blob/master/lib/src/transform/copy_crop.dart
copy_crop.dart
import '../image.dart';
/// Returns a cropped copy of [src].
Image copyCrop(Image src, int x, int y, int w, int h)
Image dst = Image(w, h, channels: src.channels, exif: src.exif,
iccp: src.iccProfile);
for (int yi = 0, sy = y; yi < h; ++yi, ++sy)
for (int xi = 0, sx = x; xi < w; ++xi, ++sx)
dst.setPixel(xi, yi, src.getPixel(sx, sy));
return dst;
用法
var croppedImage = Image copyCrop(Image sampleImageSrc, int pointX, int pointY, int desiredWidth, int desiredHeight);
【讨论】:
顺便问一下,你知道如何将相机图像转换为图像吗? @JoshuadeGuzman 没有简单的方法可以做到这一点,但希望这个帖子可以帮助你。 github.com/flutter/flutter/issues/26348 @hoangquyy 对我有用的是将图像获取为字节 image = _imageFile.readAsBytesSync() 然后: Image.memory(DartImage.encodePng(DartImage.copyCrop(DartImage.decodeImage(Uint8List image), x, y, w, h,) 返回一个 Flutter Image(我在这里定义 package:image 为 DartImage)以上是关于我们可以在 Flutter 中裁剪带有点和大小的图像吗?的主要内容,如果未能解决你的问题,请参考以下文章