2009-10-01 124 views

回答

1

以下鏈接可以幫助你:)

snippets.dzone.com/posts/show/4336

更新:在鏈接上面的代碼物理調整大小,如果你的目的是要調整圖像文件,以節省空間,節省了圖像,否則如上所述,您可以手動設置圖像控件上的高度/寬度。

0

如果你加載一個圖像,那麼你可以只設置寬度/高度屬性。

例如

Bitmap bmp = new Bitmap(@"c:\myfile.bmp"); 
bmp.Width = (int)(bmp.Width/2); 
bmp.Height = (int)(bmp.Height/2); 
0

加載到gdi +(system.drawing)和scale?

-2

從我個人的代碼庫。無論如何,有點老。

protected Image FixedSize(Image imgPhoto, int Width, int Height) 
{ 
    int width = imgPhoto.Width; 
    int height = imgPhoto.Height; 
    int x = 0; 
    int y = 0; 
    int num5 = 0; 
    int num6 = 0; 
    float num7 = 0f; 
    float num8 = 0f; 
    float num9 = 0f; 
    num8 = ((float) Width)/((float) width); 
    num9 = ((float) Height)/((float) height); 
    if (num9 < num8) 
    { 
     num7 = num9; 
     num5 = Convert.ToInt16((float) ((Width - (width * num7))/2f)); 
    } 
    else 
    { 
     num7 = num8; 
     num6 = Convert.ToInt16((float) ((Height - (height * num7))/2f)); 
    } 
    int num10 = (int) (width * num7); 
    int num11 = (int) (height * num7); 
    Bitmap image = new Bitmap(Width, Height, PixelFormat.Format24bppRgb); 
    image.SetResolution(imgPhoto.HorizontalResolution, imgPhoto.VerticalResolution); 
    Graphics graphics = Graphics.FromImage(image); 
    graphics.Clear(ColorTranslator.FromHtml("#ffffff")); 
    graphics.InterpolationMode = InterpolationMode.HighQualityBicubic; 
    graphics.DrawImage(imgPhoto, new Rectangle(num5, num6, num10, num11), new Rectangle(x, y, width, height), GraphicsUnit.Pixel); 
    graphics.Dispose(); 
    return image; 
} 
+1

-1:num1,num2,num3,... num11。沒有冒犯,但變量名稱的選擇會像代碼被有目的地混淆。 – Juliet 2009-10-01 14:19:59

+0

這是一些嚴重的WTF代碼:變量名稱,Convert.ToInt16,ColorTranslators.FromHtml。我會避免低調投票,因爲至少你得到了InterpolationMode。 – MusiGenesis 2009-10-01 14:44:27

+0

Kidooosss ...此代碼來自.NET Reflector。我有複製粘貼的想法。意圖是隻顯示邏輯。評分...你的選擇。 :-) – NinethSense 2009-10-05 10:18:47

0

在additiona別人所說的話,比300x300的較小的圖像,Image.GetThumbnailImage十分便利:

static void Main(string[] args) 
{ 
    Bitmap b = new Bitmap(@"C:\Documents and Settings\juliet\My Documents\My Pictures\julietawesome.bmp"); 
    Image image = b.GetThumbnailImage(100, 100, null, IntPtr.Zero); 
    image.Save(@"C:\Documents and Settings\juliet\My Documents\My Pictures\thumbnail.bmp", ImageFormat.Bmp); 
} 
0

由於沒有其他人這樣說:嘗試WPF。

0
Public Function ScaleByPercent(ByVal imgPhoto As Image, ByVal Percent As Integer) As Image 

     Dim nPercent As Single = (CType(Percent, Single)/100) 
     Dim sourceWidth As Integer = imgPhoto.Width 
     Dim sourceHeight As Integer = imgPhoto.Height 
     Dim sourceX As Integer = 0 
     Dim sourceY As Integer = 0 

     Dim destX As Integer = 0 
     Dim destY As Integer = 0 
     Dim destWidth As Integer = CType((sourceWidth * nPercent), Integer) 
     Dim destHeight As Integer = CType((sourceHeight * nPercent), Integer) 

     Dim bmPhoto As New Bitmap(destWidth, destHeight, PixelFormat.Format24bppRgb) 
     bmPhoto.SetResolution(imgPhoto.HorizontalResolution, imgPhoto.VerticalResolution) 

     Dim grPhoto As Graphics = Graphics.FromImage(bmPhoto) 
     grPhoto.InterpolationMode = InterpolationMode.HighQualityBicubic 
     grPhoto.DrawImage(imgPhoto, New Rectangle(destX, destY, destWidth, destHeight), New Rectangle(sourceX, sourceY, sourceWidth, sourceHeight), GraphicsUnit.Pixel) 
     grPhoto.Dispose() 
     Return bmPhoto 

    End Function 
+0

請注意,在對圖像大小進行重大更改時,GDI調整大小算法會產生平庸的結果。我過去編寫了類似的代碼,然後切換到第三方庫以獲得更好的質量調整算法。 – ScottS 2009-10-01 21:33:49