2009-12-02 4 views
1

У меня есть изображение, где я изменяю размер изображения в миниатюре он отлично работает, если я использую размер изображения [700 (ширина) * 600 (высота)] orignal size let скажем, у меня есть 10 изображений размером THEISПроблема при изменении размера изображения до размера миниатюры

но если я использовать изображение вокруг размера [1100 * 1200] оригинальная размер это изменить размер изображения в миниатюре, но оленья кожа соответствовать размеру другого thubnail изображения

когда отображаются в элементе управления списком все изображения, размеры которых указаны в [700 * 600], показаны в одном размере

изображения, которое по размеру в [1100 * 1200], показаны в одном размере [slighty меньше, чем другие изображения]

поэтому, когда я отображение изображения в ListView так что это управление смотрит все 10 изображений показаны в одном размере , но одно изображение отображается в меньшем размере

и несколько раз все изображения будут загружены нормально

, но некоторые изображения не показаны только несколько изображений через 10 изображений 2 изображения SRE не показаны

System.Drawing.Image objImage = System.Drawing.Bitmap.FromFile(System.Web.HttpContext.Current.Server.MapPath(@"Images\" + sImageFileName)); 
if (sImageFileName != null) 
{ 
    if (iThumbSize == 1) 
    { 

     dHeight = objImage.Height; 
     dWidth = objImage.Width; 
     dNewHeight = 100; 
     dNewWidth = 100; 
     objImage = objImage.GetThumbnailImage((int)dNewWidth, (int)dNewHeight, new System.Drawing.Image.GetThumbnailImageAbort(callback), new IntPtr()); 
} 

это я код, что я использую я ставлю высоту размера и ширину до 100

любая помощь была бы замечательной спасибо

+0

Таким образом, у вас есть 2 проблемы, одна из них - согласованность соотношения сторон, а другая - некоторые измененные изображения не отображаются, да? –

+0

http://stackoverflow.com/questions/87753/resizing-an-image-without-losing-any-quality – Galilyou

+0

ya that is the issue – happysmile

ответ

1

Я не понимаю, в чем проблема с вашим кодом, однако я бы предложил использовать объект Graphics для рисования изображения вместо использования объекта Image.
Вот пример:

Bitmap newImage = new Bitmap(newWidth, newHeight); using (Graphics gr = Graphics.FromImage(newImage)) { 
    gr.SmoothingMode = SmoothingMode.AntiAlias; 
    gr.InterpolationMode = InterpolationMode.HighQualityBicubic; 
    gr.PixelOffsetMode = PixelOffsetMode.HighQuality; 
    gr.DrawImage(srcImage, new Rectangle(0, 0, newWidth, newHeight)); } 
0

управления ListView (и ImageList тоже) предназначен для работы с изображениями равномерных размера. Это может быть странно, но это та ситуация. Поэтому я разрешаю ListView работать по своему усмотрению. Я создал SquareThumbnail от всех моих изображений от обычных эскизов:

private void Thumbnail_Square() 
{ 
    Size size = new Size(Settings.Thumbnail.Size, Settings.Thumbnail.Size); 
    this._squareThumbnail = new Bitmap(size.Width, size.Height, this._thumbnail.PixelFormat); 
    Graphics g = Graphics.FromImage(this._squareThumbnail); 
    g.FillRectangle(Brushes.Purple, 0, 0, size.Width, size.Height); 
    size = this._thumbnail.Size; 
    Point location = new Point(
     (Settings.Thumbnail.Size - size.Width)/2, 
     (Settings.Thumbnail.Size - size.Height)/2); 
    g.DrawImage(this._thumbnail, 
    new Rectangle(location.X, location.Y, size.Width, size.Height), 
    new Rectangle(0, 0, this._thumbnail.Width, this._thumbnail.Height), GraphicsUnit.Pixel); 
    g.Dispose(); 
} 

Я использовал ImageList.TransparentColor = Color.Purple в форме, чтобы сделать его хорошо выглядеть.

Смежные вопросы