以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]如何修改图片的位深度  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=193083)

--  作者:流水
--  发布时间:2024/8/15 9:49:00
--  [求助]如何修改图片的位深度
用代码减小图片了的分辨率,但减小后的图片反而比原图还大;
原图是微信发过来的图片 
大小 393K,
位深度 24

修改后的图片反而有 
大小 2.5M;
位深度 32

比对了两个图片的不同,发现 位深度 不同;想求助 如何用代码修改位深度;

--  作者:有点蓝
--  发布时间:2024/8/15 9:55:00
--  
使用了什么代码?
--  作者:流水
--  发布时间:2024/8/15 10:34:00
--  
这个代码修改后是1.75MB

mark 缩放图片

 

Dim file As String = "d:\\test.jpg"
Dim img As image = getImage(file)
Dim bmp As bitmap
If img.width > 800 Then
    If 800 * (img.height / img.width) > 600 Then
        bmp = new bitmap(img, 800*(600/(800*(img.height/img.width))), 600)
    Else
        bmp = new bitmap(img, 800, 800 * (img.height / img.width))
    End If
End If
bmp.save("d:\\缩略图.jpg")
bmp.Dispose

[此贴子已经被作者于2024/8/15 10:34:48编辑过]

--  作者:有点蓝
--  发布时间:2024/8/15 12:03:00
--  
换种方式试试

Dim file As String = "d:\\test.jpg"
Dim img As image = getImage(file)
Dim bmp As bitmap
If img.width > 800 Then
    If 800 * (img.height / img.width) > 600 Then
        bmp = new bitmap(800*(600/(800*(img.height/img.width))), 600,PixelFormat.Format24bppRgb)
    Else
        bmp = new bitmap(800, 800 * (img.height / img.width),PixelFormat.Format24bppRgb)
    End If
Dim g = Graphics.FromImage(bmp)
Dim rectSrc As New System.Drawing.Rectangle(0, 0, bmp.Width, bmp.Height)
g.DrawImage(bmprectSrc , rectSrc, GraphicsUnit.Pixel)
g.Dispose()
bmp.Save("d:\\缩略图.jpg",img.RawFormat)
bmp.Dispose
End If


--  作者:流水
--  发布时间:2024/8/15 13:32:00
--  
这个可以,谢谢