0
A1R5G5B5タイプの画像(1ビットアルファ、5ビットレッド、5ビットグリーン、5ビットブルー)のピクセルである2バイト(16ビット)をC#で変換する必要があります標準0-255の値 ありがとうございましたc#read rgb from A1R5G5B5画像タイプ
A1R5G5B5タイプの画像(1ビットアルファ、5ビットレッド、5ビットグリーン、5ビットブルー)のピクセルである2バイト(16ビット)をC#で変換する必要があります標準0-255の値 ありがとうございましたc#read rgb from A1R5G5B5画像タイプ
これはすばやく汚れた解決策ですが、それはあなたのために働くはずです。
using System.Drawing;
class ShortColor
{
public bool Alpha { get; set; }
public byte Red { get; set; }
public byte Green { get; set; }
public byte Blue { get; set; }
public ShortColor(short value)
{
this.Alpha = (value & 0x8000) > 0;
this.Red = (byte)((value & 0x7C64) >> 10);
this.Green = (byte)((value & 0x3E0) >> 5);
this.Blue = (byte)((value & 0x001F));
}
public ShortColor(Color color)
{
this.Alpha = color.A != 0;
this.Red = (byte)(color.R/8);
this.Green = (byte)(color.G/8);
this.Blue = (byte)(color.B/8);
}
public static explicit operator Color(ShortColor shortColor)
{
return Color.FromArgb(
shortColor.Alpha ? 255 : 0,
shortColor.Red * 8,
shortColor.Green * 8,
shortColor.Blue * 8
);
}
}
試してみて! – ghiboz
2バイトのみを変換したいとは思われません。 –
A1R5G5B5フォーマットは2バイトのみです。たとえば、Photoshopから2または3色のフラットなTGAを保存し、イメージを圧縮すると、tgaはA1R5G5B5フォーマットで保存されます... – ghiboz