2013-10-04 72 views
2

如何将图片大小调整为100px,并将图片保存为图片框中的PNG图片?我可以做保存但输出文件不会打开。我只有下面的代码。调整图片大小并将图片保存为PNG

picbox.Image.Save("example_file", System.Drawing.Imaging.ImageFormat.Png) 
+0

我应该提到,如果您的原始图像/图片框不是正方形,您可能需要缩放图像而不是制作明确的100x100大拇指,以免失真。 – Plutonix

+0

如何缩放图像?我还不熟悉.net中的图形处理。 –

+0

它不是一个NET的东西,缩放只是算术。在绘制之前,你只需要做一些简单的划分。试试看,如果卡住了,请发表问题。 – Plutonix

回答

2

用于缩略图的基础是相当简单:

  1. 创建所需大小的新位图
  2. 画原来它;通过绘制到一个更小的BMP,它是缩略图

为了保存,您可能需要添加“.png”到文件名。由于图像是在picbox,把它弄出来少打字:

Dim bmp As Bitmap = CType(picbox.Image, Bitmap) 

' bmpt is the thumbnail 
Dim bmpt As New Bitmap(100, 100) 
Using g As Graphics = Graphics.FromImage(bmpt) 

    ' draw the original image to the smaller thumb 
    g.DrawImage(bmp, 0, 0, 
       bmpt.Width + 1, 
       bmpt.Height + 1) 
End Using 

bmpt.Save("example_file.PNG", System.Drawing.Imaging.ImageFormat.Png) 

注:

  1. Bitmap创建必须处理掉,当你用它做的。
    • 如果储蓄是所有你需要做的,添加bmpt.Dispose()作为最后一道防线。
    • 如果将上述内容用作返回缩略图的方法,则获取新缩略图的代码必须处理该缩略图。
  2. 如果原始图像已打开(如PictureBox中所示),则无法将其保存为相同的文件名。稍微改变名称,例如保存为“myFoo_t”的“myFoo”。
  3. 上面的代码假设一个正方形图像。如果高度和宽度不相同,则还需要缩放缩略图位图以防止缩略图失真。也就是说,计算另一个新的Bitmap的高度或宽度。