コード例 #1
0
        public static byte[] MakePixdata(PIXHeader header, Bitmap bmp)
        {
            MemoryStream m = new MemoryStream();

            for (int y = 0; y < header.Height; y++)
            {
                for (int x = 0; x < header.Width; x++)
                {
                    switch (header.PixelFormat)
                    {
                    case 5:
                        Color  c     = bmp.GetPixel(x, y);
                        ushort value = (ushort)(c.R >> 3);
                        value <<= 6;
                        value  |= (ushort)(c.G >> 2);
                        value <<= 5;
                        value  |= (ushort)(c.B >> 3);
                        m.WriteByte((byte)(value >> 8));
                        m.WriteByte((byte)value);
                        break;
                    }
                }
            }
            return(m.ToArray());
        }
コード例 #2
0
        public static Bitmap MakeBitmap(PIXHeader header, PIXData image)
        {
            if (header == null || image == null)
            {
                return(null);
            }
            Bitmap   result = new Bitmap(header.Width, header.Height);
            Graphics gr     = Graphics.FromImage(result);

            gr.Clear(Color.White);
            MemoryStream m = new MemoryStream(image.ImageData);

            for (int y = 0; y < header.Height; y++)
            {
                for (int x = 0; x < header.Width; x++)
                {
                    switch (header.PixelFormat)
                    {
                    case 5:
                        m.Seek((x + y * header.Width) * image.BytesPerPixel, 0);
                        ushort value = Helper.ReadU16LE(m);
                        byte   b     = (byte)(value & 0x1F);
                        value >>= 5;
                        byte g = (byte)(value & 0x3F);
                        value >>= 6;
                        byte r = (byte)(value & 0x1F);
                        r <<= 3;
                        g <<= 2;
                        b <<= 3;
                        result.SetPixel(x, y, Color.FromArgb(255, r, g, b));
                        break;
                    }
                }
            }
            return(result);
        }