我们可以在 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 中裁剪带有点和大小的图像吗?的主要内容,如果未能解决你的问题,请参考以下文章

Flutter ClipRect 使用介绍

带有裁剪和调整大小的图像上传器

Dart/Flutter 替代 PHP 调整裁剪图像大小?

UIImage 调整大小并裁剪以适合

ps怎么按比例裁剪图片

带有裁剪参数的拇指上传