Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import 'package:flutter/material.dart';
- import 'dart:async';
- import 'dart:io';
- import 'package:flutter/services.dart';
- import 'package:flutter_image_compress/flutter_image_compress.dart';
- // import 'package:path_provider/path_provider.dart';
- // import 'package:image_picker/image_picker.dart';
- void main() => runApp(new MyApp());
- class MyApp extends StatefulWidget {
- @override
- _MyAppState createState() => new _MyAppState();
- }
- class _MyAppState extends State<MyApp> {
- @override
- void initState() {
- super.initState();
- }
- // Platform messages are asynchronous, so we initialize in an async method.
- Future<void> compress() async {
- var img = AssetImage("img/img.jpg");
- print("pre compress");
- var config = new ImageConfiguration();
- AssetBundleImageKey key = await img.obtainKey(config);
- final ByteData data = await key.bundle.load(key.name);
- var beforeCompress = data.lengthInBytes;
- print("beforeCompress = $beforeCompress");
- var result =
- await FlutterImageCompress.compressWithList(data.buffer.asUint8List());
- print("after = ${result?.length ?? 0}");
- }
- ImageProvider provider;
- @override
- Widget build(BuildContext context) {
- return new MaterialApp(
- home: new Scaffold(
- appBar: new AppBar(
- title: const Text('Plugin example app'),
- ),
- body: new Center(
- child: Column(
- children: <Widget>[
- Image(
- image: provider ?? AssetImage("img/img.jpg"),
- ),
- FlatButton(
- child: Text('capture'),
- onPressed: _capture,
- ),
- FlatButton(
- child: Text('file image'),
- onPressed: getFileImage,
- ),
- ],
- ),
- ),
- floatingActionButton: FloatingActionButton(
- child: Icon(Icons.computer),
- onPressed: _capture,
- ),
- ),
- );
- }
- Future<Directory> getTemporaryDirectory() async {
- return Directory.current;
- }
- void _capture() async {
- var img = AssetImage("img/img.jpg");
- print("pre compress");
- var config = new ImageConfiguration();
- AssetBundleImageKey key = await img.obtainKey(config);
- final ByteData data = await key.bundle.load(key.name);
- var dir = await getTemporaryDirectory();
- File file = File("${dir.absolute.path}/test.png");
- file.writeAsBytesSync(data.buffer.asUint8List());
- List<int> list = await testCompressFile(file);
- ImageProvider provider = MemoryImage(list);
- this.provider = provider;
- setState(() {});
- }
- void getFileImage() async {
- var img = AssetImage("img/img.jpg");
- print("pre compress");
- var config = new ImageConfiguration();
- AssetBundleImageKey key = await img.obtainKey(config);
- final ByteData data = await key.bundle.load(key.name);
- var dir = await getTemporaryDirectory();
- File file = File("${dir.absolute.path}/test.png");
- file.writeAsBytesSync(data.buffer.asUint8List());
- var targetPath = dir.absolute.path + "/temp.png";
- var imgFile = await testCompressAndGetFile(file, targetPath);
- provider = FileImage(imgFile);
- setState(() {});
- }
- Future<List<int>> testCompressFile(File file) async {
- var result = await FlutterImageCompress.compressWithFile(
- file.absolute.path,
- minWidth: 2300,
- minHeight: 1500,
- quality: 94,
- );
- print(file.lengthSync());
- print(result.length);
- return result;
- }
- Future<File> testCompressAndGetFile(File file, String targetPath) async {
- var result = await FlutterImageCompress.compressAndGetFile(
- file.absolute.path, targetPath,
- quality: 88);
- print(file.lengthSync());
- print(result.lengthSync());
- return result;
- }
- Future<List<int>> testCompressAsset(String assetName) async {
- var list = await FlutterImageCompress.compressAssetImage(
- assetName,
- minHeight: 1920,
- minWidth: 1080,
- quality: 96,
- );
- return list;
- }
- Future<List<int>> testComporessList(List<int> list) async {
- var result = await FlutterImageCompress.compressWithList(
- list,
- minHeight: 1920,
- minWidth: 1080,
- quality: 96,
- );
- print(list.length);
- print(result.length);
- return result;
- }
- void writeToFile(List<int> list, String filePath) {
- var file = File(filePath);
- file.writeAsBytes(list, flush: true, mode: FileMode.write);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement