VBGood网站全文搜索 Google

搜索VBGood全站网页(全文搜索)

VB爱好者乐园(VBGood)

 找回密码
 立即注册
搜索
123
返回列表 发新帖
楼主: lemondian

[求助] 有关图片的旋转与放缩问题

[复制链接]
 楼主| 发表于 2014-3-18 08:31:54 | 显示全部楼层
再顶顶。。。
回复 支持 反对

使用道具 举报

发表于 2014-3-18 09:57:36 | 显示全部楼层
xmxoxo 发表于 2014-3-17 01:48
完成了程序整合,顺便加上了保存成JPG格式,不过生成缩略图的算法还是用楼上的;
楼主可以用程序里带的 ...

好兴致,给点建议:
1、PlgBlt函数就是对图形进行任意缩放、旋转、扭曲的,速度可实时(800*800以下的10ms内可完成)。给它提供一个图形的三点坐标,坐标按顺序分别是左上角、右上角、左下角,放在一个3个元素的数组中即可。
2、判断图像方向我觉得判断眼睛或判断背景色比较好,因为人像怎么的都还是有眼睛的,用头发判断如果真的碰上光头或穿黑衣服的就麻烦了。
3、读取像素不要用getpixel,太慢了,应先用gdi函数GetBitmapBits把图像读到数组中再操作,用vb操作数组比getpixel要快上100倍。

点评

多谢建议,现在都改成GDI+了;  发表于 2014-3-18 11:08
回复 支持 反对

使用道具 举报

发表于 2014-3-18 11:07:13 | 显示全部楼层
程序改了,昨天改到半夜,结果早上到公司打开项目想优化一下,同事按到了电源开关,直接关机了,再开机一看,核心文件全空了,
一晚上的功夫白费了。中午重新整理下。

现在全部改成用GDI+来进行处理了:
* 缩略图使用GDI+直接生成,支持按比例,也可指定宽或者高,同时保持长宽比;
* 对图像的角度判断,也改成了直接读取文件的EXIF信息,如果读不到再用图像识别算法;
* 对图像的旋转也使用GDI+进行处理;

昨天晚上测试的结果,转换的缩略图是100*300时,51个文件用时在6-12秒。

点评

源码呢?  发表于 2014-3-18 14:45
回复 支持 反对

使用道具 举报

发表于 2014-3-18 16:48:47 | 显示全部楼层
重新改了程序,把所有功能合并 到一个函数里:缩放,比例,自动旋转,保存成JPG
单个图片处理在0.0X秒,批量处理51个图用时 5秒左右;


附上程序源码包:


想测试的朋友直接下载EXE压缩包

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

点评

非常感谢!速度很快,效果非常好! NB  发表于 2014-3-19 08:58

评分

参与人数 1威望 +12 收起 理由
lemondian + 12 很给力

查看全部评分

回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-3-19 09:39:08 | 显示全部楼层
还有一个这样的问题哩:
原图(921*1134):
    If Not ShowTNImg(Me.hDC, strFileName, 150, 0, 0.2, strFileName & "-small.jpg", True) Then
        MsgBox "图片转换失败,可能不是图像或没找到图像"
    Else
        Picture2.Cls
        ShowTNImg Picture2.hDC, strFileName & "-small.jpg", Picture2.Width, Picture2.Height
   
        'Picture2.Picture = LoadPicture(strFilename & "-small.jpg")
        Debug.Print "处理用时(秒):" & Round(Timer - sngT, 2)

        MsgBox "处理用时(秒):" & FormatNumber(Timer - sngT, 2, vbTrue)

    End If
参数150,0生成的图片(150*185):


若将If Not ShowTNImg(Me.hDC, strFileName, 150, 110, 0.2, strFileName & "-small.jpg", True) Then

则生成的图片(89*110):

可是我的原意是生成150*110比例呀?!为什么呢?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

点评

哦,明白了。当然不希望变形啦 你再发一个有白边的吧!谢谢!  发表于 2014-3-19 14:03
你是希望出现补白, 还是希望图变形?  发表于 2014-3-19 11:40
这块的逻辑没有处理,如果新设定的比例与原图比例不同, 那应该是会有个白边出现的,不然图像就变形了; 这个只要改下判断即可,我回头单独发这块fix  发表于 2014-3-19 11:26
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-3-20 20:21:42 | 显示全部楼层
xmxoxo :没空放吗?

点评

再催催xmxoxo  发表于 2014-3-31 11:50
好的。再次谢谢你的帮助!  发表于 2014-3-25 19:26
啊,这几天都忙工作了,周末看下  发表于 2014-3-25 19:05
回复 支持 反对

使用道具 举报

发表于 2014-4-10 22:06:34 | 显示全部楼层
我要下载啊
回复 支持 反对

使用道具 举报

发表于 2014-4-10 23:11:57 | 显示全部楼层
好贴,顶一下,学习了
回复 支持 反对

使用道具 举报

发表于 2014-12-25 09:42:31 | 显示全部楼层
好贴,顶一下,学习了,非常感谢。
回复 支持 反对

使用道具 举报

发表于 2015-6-30 16:35:11 | 显示全部楼层
来学习下
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

文字版|手机版|小黑屋|VBGood  

GMT+8, 2022-7-5 11:06

VB爱好者乐园(VBGood)
快速回复 返回顶部 返回列表