Dart 如何在颤振中裁剪图像?
假设我有一个矩形的肖像图像: 我想裁剪它,使其呈现如下: 我怎样才能在弗利特做到这一点 (我不需要调整图像的大小。) (图片来源)看看,它是一个独立于平台的库,用于在Dart中操作图像 您可以使用以下功能:Dart 如何在颤振中裁剪图像?,dart,flutter,Dart,Flutter,假设我有一个矩形的肖像图像: 我想裁剪它,使其呈现如下: 我怎样才能在弗利特做到这一点 (我不需要调整图像的大小。) (图片来源)看看,它是一个独立于平台的库,用于在Dart中操作图像 您可以使用以下功能: Image copyCrop(Image src, int x, int y, int w, int h); 我可能会用a和a。您可以使用alignment和fit属性来确定图像的裁剪方式。如果不想硬编码容器上的高度,可以使用小部件 您还可以直接将该类与一起使用,并执行以下操作: n
Image copyCrop(Image src, int x, int y, int w, int h);
我可能会用a和a。您可以使用alignment
和fit
属性来确定图像的裁剪方式。如果不想硬编码容器上的高度,可以使用小部件
您还可以直接将该类与一起使用,并执行以下操作:
new Image.asset(
stringToImageLocation,
fit: BoxFit.cover,
)
有一个名为
imagecrapper
的新包。我建议每个人都使用它,因为它有很多功能,使一切都更容易。它允许您将图像裁剪为所需的任意或指定的纵横比,甚至可以压缩图像。以下是该软件包的链接:导入'dart:io';
进口“包装:颤振/材料.省道”;
导入“包:image_picker/image_picker.dart”;
导入“package:image_cropper/image_cropper.dart”;
类MyPage扩展了StatefulWidget{
@凌驾
_MyPageState createState()=>\u MyPageState();
}
类MyPageState扩展了状态{
///变数
文件图像文件;
///小部件
@凌驾
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(
背景颜色:颜色(0xFF30777),
标题:文本(“图像裁剪器”),
),
主体:容器(
子项:imageFile==null
?容器(
对齐:对齐.center,
子:列(
mainAxisAlignment:mainAxisAlignment.center,
儿童:[
升起的按钮(
颜色:颜色(0xFF30777),
已按下:(){
_getFromGallery();
},
子:文本(
“从画廊中挑选”,
样式:TextStyle(颜色:Colors.white),
),
),
],
),
)
:容器(
子:Image.file(
图像文件,
适合:BoxFit.cover,
),
)));
}
///从画廊获得
_getFromGallery()异步{
PickedFile PickedFile=等待ImagePicker().getImage(
来源:ImageSource.gallery,
最大宽度:1800,
最大高度:1800,
);
_cropImage(pickedFile.path);
}
///作物图像
_cropImage(文件路径)异步{
文件裁剪图像=等待图像裁剪器.cropImage(
sourcePath:filePath,
最大宽度:1080,
最大高度:1080,
);
如果(裁剪图像!=null){
图像文件=裁剪图像;
setState((){});
}
}
}
为您的图像
小部件提供一个拟合
因子,然后将其包装在AspectRatio
中
AspectRatio(
方面:1.5,
子:Image.asset(
“你的形象资产”,
适合:BoxFit.cover,
),
)
谢谢!你用弗利特试过吗?我想知道如何进出brendan的图像库。我不认为Flatter提供了一种从ui.Image
获取解码图像的简单方法。但是如果您使用brendan的图像库进行解码,您可以调用image.getBytes()
并将其传递给新图像。内存
是否可以添加示例,说明如何在网络图像中执行此操作?我试图在特定的{x:897,y:235,宽度:845,高度:845}
值上裁剪图像,但找不到任何适合我的东西。哇,我有不同的问题,但这个盒子装饰技术适合我。感谢男士:)您正在尝试在渲染文件时对其进行裁剪。但是,我希望存储图像的裁剪版本,然后进行渲染。你知道这样的技术或软件包吗?嗨,我想在两个方向上显示图像的一部分。假设我有1080x1920图像,我想显示(x=100~200,y=300~400)部分。因此,我不能使用这种拟合+对齐方法。我怎样才能做到?谢谢使用DecorationImage
时,我想在两个方向上显示部分图像。假设我有1080x1920图像,我想显示(x=100~200,y=300~400)部分。因此,我不能使用这种拟合+对齐方法。我怎样才能做到?谢谢如何从该软件包中添加自定义比率?请回答?我在docs或SC中找不到任何内容,您能帮我提供一个代码片段吗?我在ImageCropper的repo中找到了这个:谢谢,@uni,是的,没错,但它只帮助显示一个纵横比,事实上,如果我们使用aspectRatio,它将锁定AspectRatioPreset中的所有列表。
new Image.asset(
stringToImageLocation,
fit: BoxFit.cover,
)
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:image_picker/image_picker.dart';
import 'package:image_cropper/image_cropper.dart';
class MyPage extends StatefulWidget {
@override
_MyPageState createState() => _MyPageState();
}
class _MyPageState extends State<MyPage> {
/// Variables
File imageFile;
/// Widget
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
backgroundColor: Color(0XFF307777),
title: Text("Image Cropper"),
),
body: Container(
child: imageFile == null
? Container(
alignment: Alignment.center,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
RaisedButton(
color: Color(0XFF307777),
onPressed: () {
_getFromGallery();
},
child: Text(
"PICK FROM GALLERY",
style: TextStyle(color: Colors.white),
),
),
],
),
)
: Container(
child: Image.file(
imageFile,
fit: BoxFit.cover,
),
)));
}
/// Get from gallery
_getFromGallery() async {
PickedFile pickedFile = await ImagePicker().getImage(
source: ImageSource.gallery,
maxWidth: 1800,
maxHeight: 1800,
);
_cropImage(pickedFile.path);
}
/// Crop Image
_cropImage(filePath) async {
File croppedImage = await ImageCropper.cropImage(
sourcePath: filePath,
maxWidth: 1080,
maxHeight: 1080,
);
if (croppedImage != null) {
imageFile = croppedImage;
setState(() {});
}
}
}