我正在尝试从位图创建一个调整大小的图像,设置一个新的高度/宽度和一个新的分辨率,并将其保存到PNG.我可以直接从A)Image.FromFile(filename)或B)New Bitmap(imageSource)创建要传递给B的A位图.两个都工作好schmokay,但A不允许我在创建时设置新的宽度/高度(但它确实允许我保留值),B不允许我预先设置值.useIcm=True
好的,现在谈谈一些代码和示例:
Dim sourceBitmap As New
Bitmap(imagePath & myImage1Name)
< - 一点都不好(#1超载).不保留喜欢HorizontalResolution
或PixelFormat打开的东西.Save
Dim sourceBitmap2 As Bitmap = Image.FromFile(imagePath & myImage1Name,
True)< - 不好(#5超载).它不
保存之类的东西
HorizontalResolution或
PixelFormat上.Save,但它
不会让我在新的大小初始化图像.
Dim targetBitmap As New
Bitmap(sourceBitmap2, newWidth,
newHeight)< - 不好.即使
sourceBitmap2(参见上面的#2)已初始化useIcm=True,但是一旦我将其作为源代码传递,它就无关紧要了targetBitmap.基本上,我正在寻找一种方式去构造既像一个新的位图useIcm=True 和设置在同一时间宽度/高度(Width/ Height是只读属性一旦创建它).
我也沿着这Graphics.DrawImage条路走下去并且它是一样的 - Graphics.FromImage(sourceBitmap)不保留价值.
为什么我需要保留这些值?因为我需要使用新的分辨率将这些图片转换为PNG(文件大小)并保持相同的物理尺寸(以英寸为单位)以进行打印.我知道所需的新像素宽度/高度是基于我传入的分辨率值.SetResolution(xDpi,yDpi)来保留物理尺寸,所以这不是问题所在.问题是PixelFormatSize需要保持不变(是的,我已经尝试了EncoderParameters- 它们不起作用.如果你愿意,我可以给你血淋淋的细节,但现在说它就足够了,它们只是不起作用) .
哇,把它从胸前拿走了!好吧,任何真正了解这一切是如何工作的人都可以提供帮助吗?
编辑:需要拉入以转换为PNG的文件类型:BMP,TIF,GIF,WMF,EMF.
执行类似以下代码的操作怎么样:您可以在 NEWGraphic 上绘制位图。然后,当您重新绘制它时,您可以改变尺寸。
Dim NewGraphic As Graphics = Nothing
Dim OutBMP As Bitmap
Using bmp As New Bitmap(3264, 4224)
Try
NewGraphic = Graphics.FromImage(bmp)
NewGraphic.FillRectangle(New SolidBrush(Color.White), 0, 0, 3264, 4224)
NewGraphic.InterpolationMode = Drawing2D.InterpolationMode.HighQualityBicubic
NewGraphic.SmoothingMode = Drawing2D.SmoothingMode.HighQuality
NewGraphic.PixelOffsetMode = Drawing2D.PixelOffsetMode.HighQuality
NewGraphic.CompositingQuality = Drawing2D.CompositingQuality.HighQuality
NewGraphic.TextRenderingHint = Drawing.Text.TextRenderingHint.AntiAliasGridFit
NewGraphic.DrawImage(MetaFileToConvert, 0, 0, 3264, 4224)
OutBMP = CType(FFConvertToBitonal(CType(bmp, Bitmap)), Bitmap)
OutBMP.SetResolution(385, 385)
OutImage = DirectCast(OutBMP, Image)
Catch ex As Exception
Throw ex
Finally
NewGraphic.Dispose()
End Try
End Using
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1392 次 |
| 最近记录: |