以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]递归函数返回不了正确的值?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=100623)

--  作者:黄训良
--  发布时间:2017/5/15 13:48:00
--  [求助]递归函数返回不了正确的值?
递归函数如下:
Dim width As Integer = args(0)  \'模板宽度
Dim height As Integer = args(1)    \'模板高度
Dim ImagePath As String = args(2)   \'图片文件
Dim iSource As Image = getimage(ImagePath)
Dim ob As Bitmap = new Bitmap(width , height )
Dim g As  Graphics  = Graphics.FromImage(ob)
g.Clear(Color.WhiteSmoke)
g.DrawImage(iSource, new Rectangle(0,0, width , height ), 0, 0, iSource.Width, iSource.Height, GraphicsUnit.Pixel)
Dim dFile As String  = "D:\\test01.JPG"
ob.Save(dFile)
Application.DoEvents()

Dim Info As new FileInfo(dFile)
Dim len As Integer = info.Length
width = width - 100
height = height - 100

If len < 204800         \'判断图片大小是否大于200KB
    Return True    \'返回不了这个TRUE
Else
    Vars("RecursiveCount") += 1  \'测试记录一下递归次数
    Functions.Execute("ImageCompress",width,height ,ImagePath)   \'递归  
End If

iSource.Dispose()
ob.Dispose()
g.Dispose()

附上例子:
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目6.foxdb



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

 你想实现什么?没看懂你代码的意思

 

Dim width As Integer = args(0)  \'模板宽度
Dim height As Integer = args(1)    \'模板高度
Dim ImagePath As String = args(2)   \'图片文件
Dim iSource As Image = getimage(ImagePath)
Dim ob As Bitmap = new Bitmap(width , height )
Dim g As  Graphics  = Graphics.FromImage(ob)
g.Clear(Color.WhiteSmoke)
g.DrawImage(iSource, new Rectangle(0,0, width , height ), 0, 0, iSource.Width, iSource.Height, GraphicsUnit.Pixel)
Dim dFile As String  = "g:\\test.jpg"
ob.Save(dFile)
Application.DoEvents()

Dim Info As new FileInfo(dFile)
Dim len As Integer = info.Length
width = width - 100
height = height - 100
Dim result As Boolean
If len < 204800         \'判断图片大小是否大于200KB
    result = True    \'返回不了这个TRUE
Else
    Vars("RecursiveCount") += 1  \'测试记录一下递归次数
    result = result OrElse Functions.Execute("ImageCompress",width,height ,ImagePath)   \'递归
End If

iSource.Dispose()
ob.Dispose()
g.Dispose()
Return result


--  作者:黄训良
--  发布时间:2017/5/15 14:44:00
--  
解决了,谢谢!
--  作者:ztmdnzc
--  发布时间:2017/6/29 18:50:00
--  
以下是引用黄训良在2017/5/15 14:44:00的发言:
解决了,谢谢!

是用老师的代码解决问题了,还是自己解决了,能否分享?