2009-12-02 127 views
1

我有一個圖像,我將圖像調整爲縮略圖大小 如果我使用圖像大小[700(寬度)* 600(高度)]或信號大小 ,說我有泰斯大小將圖像調整爲縮略圖大小的問題

的10個圖像但如果我周圍使用尺寸[1100 * 1200]一部開拓創新大小 圖像它的圖像的大小調整成縮略圖但多年平均值匹配其他thubnail圖像的大小

當在列表視圖控件中顯示 所有尺寸爲[700 * 600]在一個尺寸示

圖像,其尺寸在[1100 * 1200]在一個尺寸[略低比其他圖像]

所以當我在 列表視圖顯示圖像較小示控制,使得這看起來出 所有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個問題,一個是縱橫比的一致性,另一個是一些調整大小的圖像不顯示,是啊? – 2009-12-02 07:14:39

+0

http://stackoverflow.com/questions/87753/resizing-an-image-without-losing-any-quality – Galilyou 2009-12-02 07:18:21

+0

雅是這個問題 – happysmile 2009-12-02 10:44:40

回答

1

我不明白你的代碼是什麼問題,但是,我會建議使用圖形對象來繪製圖像,而不是使用圖像對象。
下面是一個例子:

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,使它看起來不錯。