image_utils.dart 1.5 KB

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