Foxtable(狐表)用户栏目专家坐堂 → [求助]递归函数返回不了正确的值?


  共有1855人关注过本帖树形打印复制链接

主题:[求助]递归函数返回不了正确的值?

帅哥哟,离线,有人找我吗?
黄训良
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1100 积分:8985 威望:0 精华:0 注册:2014/3/15 14:36:00
[求助]递归函数返回不了正确的值?  发帖心情 Post By: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



 回到顶部
帅哥哟,离线,有人找我吗?
有点色
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By: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


 回到顶部
帅哥哟,离线,有人找我吗?
黄训良
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1100 积分:8985 威望:0 精华:0 注册:2014/3/15 14:36:00
  发帖心情 Post By:2017/5/15 14:44:00 [只看该作者]

解决了,谢谢!

 回到顶部
帅哥哟,离线,有人找我吗?
ztmdnzc
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:501 积分:4167 威望:0 精华:0 注册:2013/1/18 13:34:00
  发帖心情 Post By:2017/6/29 18:50:00 [只看该作者]

以下是引用黄训良在2017/5/15 14:44:00的发言:
解决了,谢谢!

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


 回到顶部