以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  图片压缩  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=101560)

--  作者:超古伯
--  发布时间:2017/6/2 16:31:00
--  图片压缩
想把一些平面设计导出的jpg图片放到图片浏览器里面查看,但是一般情况下图片都比较大,可能达到几十M
直接放到图片浏览器里会导致很卡,显示的速度很慢
foxtable有没有办法压缩图片,不改变照片的大小,只改变分辨率?
或者能压缩就行
请老师们指教,不用详细代码,提供个思路就行,谢谢!

--  作者:超古伯
--  发布时间:2017/6/2 16:32:00
--  
本地使用,不需要ftp网络什么的
--  作者:有点色
--  发布时间:2017/6/2 17:54:00
--  

mark 压缩图片

 

Dim img As image = getimage("g:\\aaa.jpg")
Dim bmp As new bitmap(img.width, img.height)
Dim g = graphics.fromimage(bmp)
g.DrawImage(img, 0, 0, img.Width, img.Height)
Dim jpgEncoder As ImageCodecInfo
Dim codecs() As ImageCodecInfo = ImageCodecInfo.GetImageDecoders
For Each codec As ImageCodecInfo In codecs
    If (codec.FormatID = ImageFormat.Jpeg.Guid) Then
        jpgEncoder = codec
        Exit For
    End If
Next
 Dim myEncoder As System.Drawing.Imaging.Encoder = System.Drawing.Imaging.Encoder.Quality
Dim myEncoderParameters As EncoderParameters = New EncoderParameters(1)
Dim myEncoderParameter As EncoderParameter = New EncoderParameter(myEncoder, 30) \' 质量级别 0 对应于最大压缩,而质量级别 100 对应于最小压缩
myEncoderParameters.Param(0) = myEncoderParameter

bmp.Save("g:\\压缩图aaa.jpg", jpgEncoder, myEncoderParameters)
bmp.dispose

g.dispose

[此贴子已经被作者于2017/6/7 15:59:28编辑过]

--  作者:超古伯
--  发布时间:2017/6/2 18:54:00
--  
色版好强大!测试成功!不过有时候会提示内存不足,请问一下是foxtable设置了占用内存的比值还是我自己电脑内存不足了?
--  作者:有点蓝
--  发布时间:2017/6/2 20:22:00
--  
跟Foxtable和电脑的内存都没有关系。是图片文件处理时分配的内存不足,这个和。net处理图片的方式有关。
--  作者:zoyong
--  发布时间:2019/8/8 8:45:00
--  
Dim myEncoderParameter As EncoderParameter = New EncoderParameter(myEncoder, 30) \' 质量级别 0 对应于最大压缩,而质量级别 100 对应于最小压缩

 0 对应于最大压缩, 100 对应于最小压缩

是不是数值越小,图片压缩后也越小

--  作者:有点蓝
--  发布时间:2019/8/8 9:00:00
--  
是的