13 个版本

0.1.11 2024年5月1日
0.1.11-1 2024年5月17日
0.1.10 2024年3月12日
0.1.5 2024年2月29日

#99 in 图像

Download history 109/week @ 2024-04-28 4/week @ 2024-05-05 64/week @ 2024-05-12 25/week @ 2024-05-19

1,318 每月下载量

MIT 许可证

1MB
2K SLoC

ICU

图像转换超

简介

图像转换超(ICU)是一种将图像从一种格式转换为另一种格式的软件。它设计成一个多功能的工具,可以处理各种图像格式并将它们转换为其他格式。ICU设计为独立应用程序,可以在支持必要依赖项的任何平台上使用。ICU是用RUST编写的。

特性

  • 支持广泛的图像格式
  • 支持LVGL二进制格式
  • 支持预览广泛的图像格式和LVGL二进制格式

如何安装

ICU是独立应用程序,可以安装在支持必要依赖项的任何平台上。

  • Homebrew
brew install W-Mai/homebrew-cellar/icu_tool

brew tap W-Mai/homebrew-cellar
brew install icu_tool
  • PowerShell
powershell -c "irm https://github.com/W-Mai/icu/releases/download/v0.1.11/icu_tool-installer.ps1 | iex"
  • Shell
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/W-Mai/icu/releases/download/v0.1.11/icu_tool-installer.sh | sh
  • Windows MSI 安装程序

版本页面下载最新的Windows MSI安装程序并安装它。

  • Cargo

ICU是用RUST编写的,因此您需要在系统上安装RUST环境。

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

之后,您可以通过运行以下命令安装ICU:

cargo install icu_tool

如何使用自动完成功能

ICU支持bash、zsh、fish和powershell等shell的自动完成功能。

  • Bash

将以下行添加到您的.bashrc.bash_profile文件中

eval "$(icu -I bash)"
  • Zsh

将以下行添加到您的.zshrc文件中

eval "$(icu -I zsh)"
  • Fish

将以下行添加到您的config.fish文件中

icu -I fish | source

如何自行构建

git clone https://github.com/W-Mai/icu.git
cd icu
cargo build --release

如何使用

$ icu -h

`Show` or `Convert` image files to any other image format including LVGL image formats.

Usage: icu [OPTIONS] <COMMAND>

Commands:
  info     Show some information about an image file
  show     Show an image file
  convert  Convert image files to any other image format including LVGL image formats
  help     Print this message or the help of the given subcommand(s)

Options:
  -v, --verbose...  verbose mode
  -h, --help        Print help
  -V, --version     Print version

$ icu info -h

Show some information about an image file

Usage: icu info [OPTIONS] <FILE>

Arguments:
  <FILE>  an image file to show

Options:
  -f, --input-format <INPUT_FORMAT>  input image formats [default: auto] [possible values: auto, common, lvgl-v9]
  -h, --help                         Print help (see more with '--help')

icu convert -h

Convert image files to any other image format including LVGL image formats

Usage: icu convert [OPTIONS] --output-format <OUTPUT_FORMAT> <INPUT_FILES>...

Arguments:
  <INPUT_FILES>...  input files

Options:
  -f, --input-format <INPUT_FORMAT>
          input image formats [default: auto] [possible values: auto, common, lvgl-v9]
  -O, --output-folder <OUTPUT_FOLDER>
          output folder
  -r, --override-output
          override exist output files, and you will get a warning message for sure if the output file already exists
  -G, --output-category <OUTPUT_CATEGORY>
          output image format categories [default: common] [possible values: common, bin, c-array]
  -F, --output-format <OUTPUT_FORMAT>
          output image formats [possible values: png, jpeg, bmp, gif, tiff, webp, ico, pbm, pgm, ppm, pam, lvgl]
  -S, --output-stride-align <OUTPUT_STRIDE_ALIGN>
          stride of the output image [default: 1]
  -C, --output-color-format <OUTPUT_COLOR_FORMAT>
          output color formats [possible values: rgb565, rgb565a8, rgb888, argb8888, xrgb8888, a1, a2, a4, a8, l8, i1, i2, i4, i8]
      --dither
          dither the output image so that it will look better on screens with low color depth
      --lvgl-version <LVGL_VERSION>
          LVGL Version, needed if [`ImageFormats`] is [`ImageFormats::LVGL`] [default: v9] [possible values: v9, v8]
  -h, --help
          Print help (see more with '--help')
$ icu show -h

Show an image file

Usage: icu show [OPTIONS] <FILE>

Arguments:
  <FILE>  an image file to show

Options:
  -f, --input-format <INPUT_FORMAT>  input image formats [default: auto] [possible values: auto, common, lvgl-v9]
  -h, --help                         Print help (see more with '--help')

示例

显示常见的图像格式

icu show res/img_0.png

您将看到一个包含图像的窗口。

显示LVGL图像格式

  • 不需要指定输入格式,因为ICU可以自动检测。 *
icu show res/img_0.bin

你将得到一个与之前一样的图像窗口。

将常见图像格式转换为常见图像格式

如果你想要输出日志的图像转换,可以使用 -vv 选项。

$ icu -vv convert res/img_0.png res/img_0.jpeg --output-format webp`

[2024-02-29T13:05:06Z INFO  icu] Start converting files
[2024-02-29T13:05:06Z INFO  icu] 
[2024-02-29T13:05:06Z INFO  icu] took 0.002740s for converting [res/img_0.png] to [res/img_0.webp] with format [WEBP] 
[2024-02-29T13:05:06Z INFO  icu] took 0.002257s for converting [res/img_0.jpeg] to [res/img_0.webp] with format [WEBP] 
[2024-02-29T13:05:06Z INFO  icu] 
[2024-02-29T13:05:06Z INFO  icu] Total converting time:
[2024-02-29T13:05:06Z INFO  icu]        Consuming  : 0.005121s for 2 files
[2024-02-29T13:05:06Z INFO  icu]        User   time: 0.004998s
[2024-02-29T13:05:06Z INFO  icu]        System time: 0.000123s

或简短形式

$ icu -vv convert res/img_0.png res/img_0.jpeg -F webp

将文件夹中的某些图像转换为另一个指定文件夹

res 文件夹中的所有图像转换为jpeg格式,并保存在 res/output 文件夹中,如果输出文件已存在,它将覆盖它(你应该使用 -r --override-output 选项)。

并且输出文件夹将保持与输入文件夹相同的结构.

$ icu convert res -O res/output --output-format jpeg --override-output

或简短形式

$ icu convert res -O res/output -F jpeg -r

将LVGL图像格式转换为常见图像格式

将LVGL图像格式转换为常见图像格式。如果你指定了 --overide-output 选项,ICU将覆盖已存在的输出文件。如果输出文件已存在,你肯定会收到一个警告信息。

$ icu -vv convert res/img_0.bin -O res/output -F jpeg -r

[2024-03-03T16:08:01Z INFO  icu] Start converting file
[2024-03-03T16:08:01Z INFO  icu] 
[2024-03-03T16:08:01Z WARN  icu] Override output file <res/output/img_0.jpeg> for converting <res/img_0.bin>
[2024-03-03T16:08:01Z INFO  icu] took 0.007022s for converting <res/img_0.bin> to <res/output/img_0.jpeg> with format <JPEG>
[2024-03-03T16:08:01Z INFO  icu] 
[2024-03-03T16:08:01Z INFO  icu] Total converting time:
[2024-03-03T16:08:01Z INFO  icu]        Consuming  : 0.008715s for 1 files
[2024-03-03T16:08:01Z INFO  icu]        User   time: 0.007022s
[2024-03-03T16:08:01Z INFO  icu]        System time: 0.001693s

将常见图像格式转换为LVGL图像格式

将常见图像格式转换为LVGL图像格式,你需要指定输出颜色格式和lvgl版本。但如果你没有指定lvgl版本,ICU将使用默认版本(v9)。

$ icu convert res/img_0.png -O res/output -F lvgl -C i8 -r

以行对齐方式将常见图像格式转换为LVGL图像格式

以行对齐方式将常见图像格式转换为LVGL图像格式,你需要指定输出颜色格式、lvgl版本和行对齐(默认为1)。

4 表示输出图像的行距将是对齐4字节。

$ icu convert res/img_0.png -O res/output -F lvgl -C i8 -S 4 -r

许可证

ICU在MIT许可证下授权。

依赖项

~13–31MB
~482K SLoC