Как создать миниатюру из изображения с помощью среды C# Win Mobile 6.5/Compact?

Я пытаюсь сделать/использовать изображение меньшего размера, чем изображение, снятое камерой, для отображения в частях моей программы (из-за проблем с памятью...)

К сожалению, я не могу найти способы сделать изображение/миниатюру меньшего размера на мобильном устройстве - так, как это возможно в обычных окнах...

Есть ли способ сделать изображение меньшего размера на Win Mobile 6.5/Compact Framework?

Например - эти не работают на Win Mobile

Что лучше способ создать миниатюру с помощью ASP.NET?

Выглядит многообещающе, но я хочу просто поставить изображение на PictureBox - и не знаете, как использовать это, чтобы заставить его работать.


person Tim    schedule 11.09.2011    source источник


Ответы (2)


Этот код должен работать. Я также реализовал этот код. Для этого я использовал 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;
            }
        }
person Binita    schedule 04.07.2012

Это должно работать:

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

но качество эскиза может быть не таким хорошим. Для получения качественных эскизов вы можете обратиться к этому сообщению здесь

person Waqas    schedule 11.09.2011
comment
Я знаю об этих вызовах, но это не работает на Compact framework/Win mobile, но спасибо. - person Tim; 12.09.2011