以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助]批量修改图片尺寸并保存的问题  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=99257)

--  作者:haotinghua
--  发布时间:2017/4/15 16:25:00
--  [求助]批量修改图片尺寸并保存的问题
批量选择图片并统一修改尺寸和保存,测试情况如下:
1、选中图片大小在1M的50张,可以正常完成;
2、选中图片有一张14M,有一张11M,使用时报错
3、其它类似的测试,感觉就是图片文件大的如果选择后操作会出现报错
4、内存进行了监控:内存会逐步上升,使用后内存会自动清除恢复到原来的状态
问题:是对图片大小选中有要求吗?还是因为内存占用的问题?感觉似乎不太稳定
另外如果设置选择的图片数量不超过10个,单个图片文件不超过5M,这个代码怎么写?

现有测试代码如下:
Dim i As Integer = 1 \'定义保存名时使用的编号
Dim img As image
Dim dlg As New OpenFileDialog
dlg.MultiSelect = True
dlg.Filter = "图形文件|*.bmp;*.jpg;*.gif;*.png"
If dlg.ShowDialog = DialogResult.OK Then
    For Each fl As String In dlg.FileNames
        img = getImage(fl)
        Dim bmp As new bitmap(img, 400, 400 * (img.height / img.width))
        bmp.save("D:\\新建文件夹\\" & Format(Date.now,"MMddHmmss") & i &  ".jpg")
        bmp.Dispose
        i = i + 1
    Next
 End If

[此贴子已经被作者于2017/4/15 16:25:31编辑过]

--  作者:有点色
--  发布时间:2017/4/15 16:59:00
--  

报错的问题,代码改一下,getImage对象没有释放

 

Dim i As Integer = 1 \'定义保存名时使用的编号
Dim dlg As New OpenFileDialog
dlg.MultiSelect = True
dlg.Filter = "图形文件|*.bmp;*.jpg;*.gif;*.png"
If dlg.ShowDialog = DialogResult.OK Then
    For Each fl As String In dlg.FileNames
        Dim img As new bitmap(fl)
        Dim bmp As new bitmap(img, 400, 400 * (img.height / img.width))
        bmp.save("D:\\新建文件夹\\" & Format(Date.now,"MMddHmmss") & i &  ".jpg")
        img.dispose
        bmp.Dispose
        i = i + 1
    Next
End If

 

 


--  作者:有点色
--  发布时间:2017/4/15 17:02:00
--  

限制图片个数

 

If dlg.FileNames.Length <= 10 Then

 

End If

 

限制文件大小,参考 http://www.foxtable.com/webhelp/scr/2707.htm

 


--  作者:haotinghua
--  发布时间:2017/4/15 18:58:00
--  
谢谢版主,按你方法解决了!谢谢谢谢!