Как обрезать изображение в Flutter?
допустим, у меня есть прямоугольное, портретное изображение:
Я хотел бы обрезать его, так что он отображается следующим образом:
Как я могу сделать это в Flutter?
(Мне не нужно изменять размер изображения.)
(изображение из https://flic.kr/p/nwXTDb)
4 ответов
Я бы, вероятно, использовал BoxDecoration
С DecorationImage
. Вы можете использовать alignment
и fit
свойства, чтобы определить, как обрезается изображение. Вы можете использовать AspectRatio
виджет, если вы не хотите жесткий код высоты на Container
.
import 'package:flutter/material.dart';
void main() {
runApp(new MaterialApp(
home: new MyHomePage(),
));
}
class MyHomePage extends StatelessWidget {
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
title: new Text("Image Crop Example"),
),
body: new Center(
child: new AspectRatio(
aspectRatio: 487 / 451,
child: new Container(
decoration: new BoxDecoration(
image: new DecorationImage(
fit: BoxFit.fitWidth,
alignment: FractionalOffset.topCenter,
image: new NetworkImage('https://i.stack.imgur.com/lkd0a.png'),
)
),
),
),
),
);
}
}
посмотреть Брендан-Дункан/изображения, это независимая от платформы библиотека для управления изображениями в Dart.
вы можете использовать функцию:
Image copyCrop(Image src, int x, int y, int w, int h);
вы также можете напрямую использовать изображения класс BoxFit и сделать что-то вроде:
new Image.asset(
stringToImageLocation,
fit: BoxFit.cover,
)
не совсем то, что задал вопрос, но попал сюда из Google, когда я пытался предложить пользователю интерфейс обрезки.
на image_cropper плагин помог мне.