-
Notifications
You must be signed in to change notification settings - Fork 4
/
edit_image.dart
59 lines (55 loc) · 1.89 KB
/
edit_image.dart
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
import 'dart:ui';
import 'package:flutter/foundation.dart';
import 'package:image/image.dart';
import 'package:image_editor/image_editor.dart';
Future<Uint8List> crop(Uint8List image, Rect rect) async {
if (defaultTargetPlatform
case TargetPlatform.android ||
TargetPlatform.iOS ||
TargetPlatform.macOS) {
final option = ImageEditorOption()..addOption(ClipOption.fromRect(rect));
final result =
await ImageEditor.editImage(image: image, imageEditorOption: option);
return result!;
} else {
final src = await compute(decodeImage, image);
final cropped = copyCrop(
bakeOrientation(src!),
x: rect.left.toInt(),
y: rect.top.toInt(),
width: rect.width.toInt(),
height: rect.height.toInt(),
);
return await compute(encodePng, cropped);
}
}
Future<Uint8List> flip(Uint8List image) async {
if (defaultTargetPlatform
case TargetPlatform.android ||
TargetPlatform.iOS ||
TargetPlatform.macOS) {
final option = ImageEditorOption()..addOption(const FlipOption());
final result =
await ImageEditor.editImage(image: image, imageEditorOption: option);
return result!;
} else {
final src = await compute(decodeImage, image);
final flipped = flipHorizontal(bakeOrientation(src!));
return await compute(encodePng, flipped);
}
}
Future<Uint8List> rotate(Uint8List image) async {
if (defaultTargetPlatform
case TargetPlatform.android ||
TargetPlatform.iOS ||
TargetPlatform.macOS) {
final option = ImageEditorOption()..addOption(const RotateOption(90));
final result =
await ImageEditor.editImage(image: image, imageEditorOption: option);
return result!;
} else {
final src = await compute(decodeImage, image);
final rotated = copyRotate(bakeOrientation(src!), angle: 90.0);
return await compute(encodePng, rotated);
}
}