如何使用c# Win Mobile 6.5/Compact框架从图像创建缩略图

本文关键字:框架 图像 创建 略图 Compact 何使用 Win Mobile | 更新日期: 2023-09-27 18:08:07

我正试图使/使用比相机拍摄的图像更小的图像显示在我的部分程序中(由于内存问题…)

不幸的是,我似乎无法找到在移动设备上制作更小的图像/缩略图的方法-在正常窗口中可能的方式…

是否有一种方法,使一个更小的图像在Win Mobile 6.5/Compact Framework?

例如-这些在Win Mobile上不起作用

什么是"最好的"?如何使用ASP.NET创建缩略图?

这看起来很有希望-但我只想把图像放在一个PictureBox -不知道如何使用它使其工作

如何使用c# Win Mobile 6.5/Compact框架从图像创建缩略图

这段代码应该可以工作了。我也实现了这个代码。为此,我使用了OpenNETCF.Drawing.dll。

 barray = GetImage(filepath);
                        if (barray != null)
                        {
                            ms.Write(barray, 0, barray.Length - 1);
                            imageBitmap = CreateThumbnail(ms, new Size(PreviewImageWidth, PreviewImageHeight));
                            bm = ImageUtils.IBitmapImageToBitmap(imageBitmap);
                           // m_CurrentImageID = Convert.ToInt32(lstPic.ToList()[index].Id);
                            PictureBox ib = ((PictureBox)this.imagePanel.Controls[(nIndex * 2) + 1]);
                            ib.Image = bm;
}
 private byte[] GetImage(string FilePath)
        {
            byte[] barray;
            if (File.Exists(FilePath))
            {
                FileInfo _fileInfo = new FileInfo(FilePath);
                long _NumBytes = _fileInfo.Length;
                FileStream _FStream = new FileStream(FilePath, FileMode.Open, FileAccess.Read);
                BinaryReader _BinaryReader = new BinaryReader(_FStream);
                barray = _BinaryReader.ReadBytes(Convert.ToInt32(_NumBytes));
                _FStream.Flush();
                _FStream.Dispose();
                return barray;
            }
            else
            {
                return null;
            }
        }
public IBitmapImage CreateThumbnail(Stream stream, Size size)
        {
            IBitmapImage imageBitmap;
            ImageInfo ii;
            IImage image;
            ImagingFactory factory = new ImagingFactoryClass();
            try
            {
                factory.CreateImageFromStream(new StreamOnFile(stream), out image);
                image.GetImageInfo(out ii);
                factory.CreateBitmapFromImage(image, (uint)size.Width, (uint)size.Height, ii.PixelFormat, InterpolationHint.InterpolationHintDefault, out imageBitmap);
                return imageBitmap;

            }
            catch (Exception ex)
            {
                CreateLogFiles Err = new CreateLogFiles();
                Err.ErrorLog(ex.Message);
                return null;
            }
            finally
            {
                imageBitmap = null;
                image = null;
                factory = null;
            }
        }

应该可以:

this.pictureBox1.Image = System.Drawing.Image.FromFile(@"'path to image").GetThumbnailImage(100, 100, null, IntPtr.Zero);

但是缩略图的质量可能没有那么好。关于高质量的缩略图,你可以参考这篇文章