image_utils.dart 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import 'dart:io';
  2. import 'package:cached_network_image/cached_network_image.dart';
  3. import 'package:common_utils/common_utils.dart';
  4. import 'package:flutter/material.dart';
  5. import 'package:flutter/widgets.dart';
  6. import 'package:image/image.dart' as img;
  7. import 'package:path/path.dart' as path;
  8. import 'package:path_provider/path_provider.dart';
  9. class ImageUtils {
  10. static ImageProvider getAssetImage(String name, {String format: 'png'}){
  11. return AssetImage(getImgPath(name, format: format));
  12. }
  13. static String getImgPath(String name, {String format: 'png'}) {
  14. return 'assets/images/$name.$format';
  15. }
  16. static ImageProvider getImageProvider(String imageUrl, {String holderImg: "none"}){
  17. if (TextUtil.isEmpty(imageUrl)){
  18. return AssetImage(getImgPath(holderImg));
  19. }
  20. return CachedNetworkImageProvider(imageUrl);
  21. }
  22. ///image保存临时文件夹下
  23. saveCacheImageFile( imageByte,name,{fileName="signImg"}) async{
  24. final image = img.decodeImage(imageByte);
  25. Directory tempDir = await getTemporaryDirectory();
  26. String tempPath = tempDir.path; // 临时文件夹
  27. Directory dir = Directory(tempPath + "/$fileName");
  28. if (!dir.existsSync()) {
  29. dir.createSync();
  30. }
  31. final imageFile = File(path.join(dir.path, '${name}.png')); // 保存在应用文件夹内
  32. // if(imageFile.existsSync()){
  33. // imageFile.deleteSync();
  34. // }
  35. await imageFile.writeAsBytes(img.encodePng(image)); // 需要使用与图片格式对应的encode方法
  36. return imageFile.path;
  37. }
  38. }