标题:照片BMP文件转化成JPG格式的问题
只看楼主
liuxingang28
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:山东济南
等 级:贵宾
威 望:47
帖 子:649
专家分:2156
注 册:2014-2-7
得分:0 
VFP 自带很多功能强大的基类,有些基类封装了很多 API 函数,只要擅加利用,效果事半功倍。

对于本例来说,步骤如下:

1. 在项目管理器中,切换到“Classes(类)”标签页
2. 单击“Add”按钮,添加类库“c:\Program Files (x86)\Microsoft Visual FoxPro 9\Ffc\_Gdiplus.vcx”
3. 新建一个表单
4. 在项目管理器中展开类库 _Gdiplus,将类“gpimage”拖放到表单,系统自动实例化了一个对象 gpimage1
5. 在表单上添加一个按钮,并在按钮的Click事件中输入以下代码:
程序代码:
LOCAL cFile_BMP,cFile_JPG,oImage,cQuality,i,lOK,nSize
* 指定要转换的 bmp 文件
cFile_BMP = GETPICT('bmp')
IF EMPTY(cFile_BMP) OR !FILE(cFile_BMP)
    MESSAGEBOX('文件“'+cFile_BMP+'”不存在!',48,'提示')
    RETURN
ENDIF
* 新文件与原文件同名,扩展名改为 jpg
cFile_JPG = FORCEEXT(cFile_BMP,'jpg')
* 装入原文件
oImage = THISFORM.gpimage1
IF !oImage.CreateFromFile(cFile_BMP)
    MESSAGEBOX('装入位图文件失败!')
    RETURN
ENDIF
* 另存为新文件
FOR i = 100 TO 50 STEP -5    && 图像质量从100%到50%依次转换
    cQuality = 'quality=' + TRAN(i)
    IF !oImage.SaveToFile(cFile_JPG,'image/jpeg',cQuality)
        MESSAGEBOX('保存文件失败!')
        RETURN
    ENDIF
    * 检测文件大小是否满足要求
    SET COMPATIBLE ON
    nSize = FSIZE(cFile_JPG)
    SET COMPATIBLE OFF
    IF BETWEEN(nSize,20480,102400)
        lOK = .t.
        EXIT
    ENDIF
NEXT
* 对转换结果给出提示
IF lOK
    MESSAGEBOX('文件转换成功!')
ELSE
    MESSAGEBOX('转换后的文件大小不满足要求!')
ENDIF

收到的鲜花
  • flyingcat20082015-12-31 16:25 送鲜花  3朵   附言:好文章

泉城飞狐
2015-12-29 10:21
antony521
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:168
专家分:161
注 册:2009-8-20
得分:0 
回复 21楼 liuxingang28

这要是能加个设置大小,比如像素150x210就好了.

[此贴子已经被作者于2015-12-30 09:41编辑过]

2015-12-29 12:33
flyingcat2008
Rank: 2
来 自:湖南
等 级:论坛游民
帖 子:33
专家分:13
注 册:2008-7-28
得分:0 
此贴想结贴,怎么操作。找了半天,没有看到结贴的操作按钮。请各位指示。
2016-01-03 22:03
静夜思
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:济南的冬天
等 级:管理员
威 望:11
帖 子:8842
专家分:2567
注 册:2004-3-25
得分:0 
以下是引用flyingcat2008在2016-1-3 22:03:15的发言:

此贴想结贴,怎么操作。找了半天,没有看到结贴的操作按钮。请各位指示。

问题点数为0的不需要结贴

畅所欲言
2016-01-03 22:07
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
得分:0 
以下是引用flyingcat2008在2016-1-3 22:03:15的发言:

此贴想结贴,怎么操作。找了半天,没有看到结贴的操作按钮。请各位指示。
你自己发免结,还请各位指示?
2016-01-03 22:18
flyingcat2008
Rank: 2
来 自:湖南
等 级:论坛游民
帖 子:33
专家分:13
注 册:2008-7-28
得分:0 
不好意思,现在才搞明白。
2016-01-03 22:54
flyingcat2008
Rank: 2
来 自:湖南
等 级:论坛游民
帖 子:33
专家分:13
注 册:2008-7-28
得分:0 
有时自己看自己发的贴子,很幼稚。

[此贴子已经被作者于2016-1-5 12:23编辑过]

2016-01-04 15:42
flyingcat2008
Rank: 2
来 自:湖南
等 级:论坛游民
帖 子:33
专家分:13
注 册:2008-7-28
得分:0 
“”

[此贴子已经被作者于2016-1-6 09:08编辑过]

2016-01-06 08:53



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-460548-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.232244 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved