public static Bitmap OptimizeBitmap(Stream bitmapStream)
{
Bitmap bitmap = new Bitmap(bitmapStream);
if (Environment.OSVersion.Platform != PlatformID.WinCE)
return bitmap;
using (bitmap)
{
Bitmap ret = new Bitmap(bitmap.Width, bitmap.Height, PixelFormat.Format16bppRgb565);
using (Graphics g = Graphics.FromImage(ret))
{
g.DrawImage(bitmap, 0, 0);
return ret;
}
}
//if (Environment.OSVersion.Platform == PlatformID.WinCE)
//{
// if (myImagingFactory == null)
// myImagingFactory = (IImagingFactory)Activator.CreateInstance(Type.GetTypeFromCLSID(new Guid("327ABDA8-072B-11D3-9D7B-0000F81EF32E")));
// byte[] bytes = new byte[bitmapStream.Length];
// bitmapStream.Read(bytes, 0, (int)bitmapStream.Length);
// IImage imagingResource;
// uint hresult = myImagingFactory.CreateImageFromBuffer(bytes, (uint)bitmapStream.Length, BufferDisposalFlag.BufferDisposalFlagNone, out imagingResource);
// ImageInfo imageInfo = new ImageInfo();
// hresult = imagingResource.GetImageInfo(out imageInfo);
// Bitmap ret = new Bitmap((int)imageInfo.Width, (int)imageInfo.Height, PixelFormat.Format16bppRgb565);
// using (Graphics g = Graphics.FromImage(ret))
// {
// g.Clear(myTransparentColor);
// RECT dstRect = new RECT(0, 0, (int)imageInfo.Width, (int)imageInfo.Height);
// imagingResource.Draw(g.GetHdc(), ref dstRect, IntPtr.Zero);
// Marshal.ReleaseComObject(imagingResource);
// return ret;
// }
//}
//else
//{
// PixelFormat format = (PixelFormat)925707;
// using (Bitmap bitmap = new Bitmap(bitmapStream))
// {
// Bitmap ret = new Bitmap(bitmap.Width, bitmap.Height, format);
// using (Graphics g = Graphics.FromImage(ret))
// {
// g.DrawImage(bitmap, 0, 0);
// return ret;
// }
// }
//}
}