如何在飞镖颤动中转换图像 dpi(每英寸点数)?

Posted

技术标签:

【中文标题】如何在飞镖颤动中转换图像 dpi(每英寸点数)?【英文标题】:How to convert image dpi (Dots per inch) in dart flutter? 【发布时间】:2021-08-28 07:18:57 【问题描述】:

问题与各种图像(例如 jpeg 或 png )格式的(打印)DPI 有关。

此问题与屏幕 DPI 或各种 android 设备的尺寸无关。它也与在设备上以屏幕大小显示位图无关。

【问题讨论】:

【参考方案1】:

这会将图像分辨率每英寸点数转换为 300。

Uint8List resultBytes = provider.bytes;
  print(resultBytes.toString());
  
  var dpi = 300;
  resultBytes[13] = 1;
  resultBytes[14] = (dpi >> 8);
  resultBytes[15] = (dpi & 0xff);
  resultBytes[16] = (dpi >> 8);
  resultBytes[17] = (dpi & 0xff);

  print(resultBytes.toString());

  String tempPath = (await getTemporaryDirectory()).path;
  String imgName = "IMG" + DateTime.now().microsecondsSinceEpoch.toString()+".jpg";
  File file = File('$tempPath/$imgName');
  await file.writeAsBytes(resultBytes);

  /**You will not be able to see the image in android local storage, so rewriting the file, using the code below will show you image in Pictures Directory of android storage. Note: ImageGallerySaver is plugin, just copy and paste the dependency and have a go.*/

  final result1 = ImageGallerySaver.saveFile(file.path);
  print(result1);

【讨论】:

以上是关于如何在飞镖颤动中转换图像 dpi(每英寸点数)?的主要内容,如果未能解决你的问题,请参考以下文章

Android - 如何在以编程方式加载或保存 JPEG 文件时获取或设置(打印)DPI(每英寸点数)?

android app界面设计规范(dpi,dp,px等)

WPF中DPI的问题

Android DPI相关知识

dppxdpippidensity

像素分辨率dpi的区别和联系