使用L8画像フォーマット
開始TouchGFX 4.12.3から
TouchGFX 4.12は現在の標準的な画像フォーマットL8形式をサポートしています。
ARGB8888などと比較すると、フラッシュメモリをフォーマットして、より高速なレンダリングL8少ない画像を占めています。
16ビットフォーマットRGB888フォーマットRGB565,24ビットまたは32ビットフォーマットARGB8888を指定するために256巻の異なる色のカラーパレットのリストアップ:L8画像パレットによってフォーマットの画素アレイ。バイトのピクセルアレイの各ピクセル。このバイトはピクセルのパレット(カラーリスト)インデックス尖った色です。順次画素を読み取ることによってTouchGFXフレーム、カラーパレットの検索および画像L8を描画するフレームバッファに書き込みます。これは、STM32 CHROM ARTアクセラレータハードウェアアクセラレーションにより、自動的に行われます。
これまでのところ、8 ピクセルは、L8の画像が256の異なる色を使用することができ表します。2枚の画像は、独自のパレットを持っているので、別の画像L8は、他の色の256種類を使用することができます。
パレットの4色を有する4×4画素の画像を有するL8
各ピクセルはバイト(8ビット)です。従って、ピクセル幅×高さのサイズはバイト。パレットの色は、16ビット、24ビットまたは32ビットカラーであってもよいです。したがって、各色は2、3または4バイトを占有するように定義されます。
フレームバッファは、16ビット(RGB565フォーマット)の場合、ベタ画像はL8_RGB565に格納されるべきです。フレームバッファは、24ビット(RGB888)である場合、それは画像L8 L8_RGB888形式で格納されなければなりません。画像が透明である場合は、32ビット形式(ARGB8888)を使用する必要があります。
フォーマット | フォーマットフレームバッファ | それは透明ピクセルをサポートしています |
L8_RGB565 | 16ビットRGB565 | ノー |
L8_RGB888 | 24 RGB888 | ノー |
L8_ARGB8888 | 全て | それはあります |
:パレットイメージ形式の詳細については、こちらをお読みHTTPS : //en.wikipedia.org/wiki/Indexed_color。
L8のサンプル画像
これは、ロゴ画像の典型的なものです。唯一の16の異なる色を用いた画像。
200×200ピクセルL8の24ビットカラー画像16を有します。
画像のフラッシュサイズは、元の画像の標準24ビットフォーマット(RGB888)よりも著しく小さいです。次の表は、これらの3つの特定のフラッシュイメージ異なるパレット形式の使用:
フォーマット | ピクセル/バイトサイズ | パレット/バイトのサイズ | 合計サイズ/バイト | 減少率 |
RGB888 | 12万 | 0 | 12万 | - |
L8_RGB565 | 40,000 | 32 | 40032 | 66.6パーセント |
L8_RGB888 | 40,000 | 48 | 40048 | 66.6パーセント |
L8_ARGB8888 | 40,000 | 64 | 40064 | 66.6パーセント |
私たちは、サイズが非常に大きく削減、および画像サイズ中型サイズの些細上のカラーパレットを参照してください。
TouchGFXで使用L8の画像
簡単TouchGFXで使用L8画像フォーマット。行うには唯一のものは、PNGからL8形式に画像を変換するためのconfigure画像変換器にあります。ここでは、全体のプロセスを通過します。
TouchGFXデザイナーで新規プロジェクトを作成します。フォルダの新しいプロジェクト資産/画像にあなたのイメージをコピーします。
TouchGFXデザイナーを参照して、一番上のバーで「イメージ」タブをクリックし、画像を選択します。
ウィンドウの右側に、画像フォーマットL8_RGB888(この例では24ビットカラーを実行)を選択します。
これで、キャンバスのメンバー(ここでは、バックグラウンドでのボックスを挿入)の小さな画像を挿入することができます。
ユーザ・インタフェース・コードを変更する必要はありません。私たちは、「画像」タブで行った設定に起因して、イメージコンバータは、PNGファイルを変換し、画像L8フォーマットを生成することができます。
透明画像
上述したように、それが透明性を有する画像フォーマットL8であってもよいです。
170 x 60像素的按钮图像(32位格式)ARGB8888
上图使用108种颜色(许多蓝色阴影)。该图像可以使用L8_ARGB8888格式。大小将大大降低:
格式 | 像素/字节大小 | 调色板的大小/字节 | 总大小/字节 | 减少百分比 |
ARGB888 | 40,800 | 0 | 40,800 | -- |
L8_ARGB8888 | 10,200 | 432 | 10,632 | 73.9% |
将图像转换为256色
许多图像使用超过256种颜色。这对于照片般逼真的图像或具有渐变的图像很常见。由于这些图像包含多种颜色,因此无法在TouchGFX Designer中直接将其转换为L8图像格式。
但是,在许多情况下,可以使用图像处理工具减少特定图像中使用的颜色数量,而不会降低大部分图像质量。
Paint.NET
最简单的方法是使用Paint.Net。打开原始图像,然后使用另存为将图像保存到另一个文件中。在“保存配置”对话框中,选择8位作为像素深度:
现在,在您的项目中使用新的PNG。切记在TouchGFX设计器的“图像”选项卡中选择L8_ARGB8888格式。阴影处理不佳,但是在许多情况下带有透明边缘的图标看起来不错。可以调整“透明度阈值”值,并且在某些情况下可以改善结果。
图像魔术
另一个合适的工具(有时会产生更好的L8图像)是Image Magick(可从www.imagemagick.org下载)。该工具可以从命令行转换图像。这使其适合在脚本中使用。要将clock_bg.png转换为最多使用256种颜色的图像,请使用以下命令:
为了比较,下面显示了三个图像(原始图像,使用Paint.Net的L8,使用Image Magick的L8):
中间时钟丢失了边框阴影中的细节。在这两种情况下,时钟背景的中心部分看起来都是可用的。
PNG文件中的颜色数
Image Magick还可以告诉您图像中使用了多少种颜色。使用此命令:
手动配置
也可以不使用TouchGFX Designer来选择图像格式。图像格式在项目根目录下的“ application.config”文件中指定:
{ “ image_configuration”:{ images“:{ ” Blue_Buttons_Round_Edge_small.png“:{ ” format“:” L8_ARGB8888“ } }, ” dither_algorithm“:” 2“, ” alpha_dither“:”是“, ” layout_rotation“:” 0“ , “ opaque_image_format”:“ RGB888”, “ nonopaque_image_format”:“ ARGB8888”, “ section”:“ ExtFlashSection”, “ extra_section”:“ ExtFlashSection” } }
フォーマットは「image_configuration」の下に、単一の画像「画像」の部分を指定しました。画像はここで言及されていない場合は、画像を生成するためのデフォルトフォーマット(opaque_image_formatまたはnonopaque_image_format)となります。
我々は可能な限り画像を設定するには、TouchGFX Designerをお勧めします。
[ ソース ]