0
我有一個VSTO for powerpoint,並且想要調整圖像的大小,使它們與幻燈片的大小相同。我有一個樣本圖像是1000x300,幻燈片是960x540。所以這是我的代碼有:VB.NET調整大小和裁剪圖像
_W=960
_H=540
Dim img As Image = System.Drawing.Bitmap.FromFile(file1)
OldRect = New RectangleF(233, 0, 533, 300) ' calculated values to crop left and right
NewRect = New RectangleF(0, 0, _W, _H)
Dim bmp As Bitmap = New Bitmap(img, _W, _H)
Dim g As Graphics = Graphics.FromImage(bmp)
g.InterpolationMode = Drawing2D.InterpolationMode.HighQualityBicubic
g.PixelOffsetMode = Drawing2D.PixelOffsetMode.HighQuality
g.CompositingQuality = Drawing2D.CompositingQuality.HighQuality
g.DrawImage(img, NewRect, OldRect, GraphicsUnit.Pixel)
img.Save(file2, Imaging.ImageFormat.Png)
,但是當我看到文件2是相同的1000x300文件原件。我在這裏錯過了什麼?
'img.Save(file2,Imaging.ImageFormat.Png)'您正在保存的原始圖像對象不是新的。您也泄漏資源 – Plutonix
afaik g.DrawImage重寫img的內容,因爲它將其用作源和目標。第一個NewRect應該告訴它新的尺寸和OldRect原始圖像的一部分。 或者是我失蹤的部分,不是這樣工作嗎? – user3432565
btw,我在退出函數之前調用img.Dispose()。當我退出該功能時,其餘的應該是GC'd? – user3432565