标题:照片BMP文件转化成JPG格式的问题
只看楼主
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
后面是jpg图,但不是用vfp转的,那是先看有没有可能满足你的要求,如果可以,就用vfp实现。图像格式转换是用Windows GDI完成的,只要满足要求,就可以用vfp调用GDI做出来。

这两天有点忙,有空给你写一个程序批量转换吧。

授人以渔,不授人以鱼。
2015-12-26 01:08
flyingcat2008
Rank: 2
来 自:湖南
等 级:论坛游民
帖 子:33
专家分:13
注 册:2008-7-28
得分:0 
回复 11楼 TonyDeng
太好了,我不需要批量转换,每照一张,及时转换成25KB(大于20kb,小于82kb)左右的jpg格式的照片文件就可以了。因为我要嵌入到我的vfp程序里。再次十分感谢!
2015-12-26 09:21
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
(236.24 KB)
收到的鲜花
  • flyingcat20082015-12-31 16:23 送鲜花  3朵   附言:好文章

授人以渔,不授人以鱼。
2015-12-26 19:24
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
用法:在你的主程序中照我Main寫的那樣設置必要的環境,關鍵是載入_GDIPlus.VCX類庫,然後,使用函數PicConvert()即可。

quality就是JPEG的圖像質量値,設置爲100%就是這個效果,如果還要體積壓小一點,可以把這個値調整一下,直到獲得满意結果,壓到最低限20K是可以的。

[此贴子已经被作者于2015-12-26 19:40编辑过]


授人以渔,不授人以鱼。
2015-12-26 19:34
flyingcat2008
Rank: 2
来 自:湖南
等 级:论坛游民
帖 子:33
专家分:13
注 册:2008-7-28
得分:0 
刚回来看到版主的杰作,解决了我十多天以来百思不得其解的问题,由此也看出版主对各种语言的使用融会贯通,解决难题的方法信手拈来,颇有大将风范。本人对版主的帮助铭记于心,并以此激励自己要多学习各家之长,特别是要加强功能强大的语言学习,如C。
2015-12-27 01:32
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
那个vcx是vfp9带的封装类库,其实就是把Windows GDI+ API封装起来。本来就你这个需求来说,可以不用这么大的库(占300K空间),但考虑到扩展及编码方便,就用了它。

授人以渔,不授人以鱼。
2015-12-27 08:16
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
主要调用API:
GdipLoadImageFromFile()
GdipSaveImageToFile()
从提供的图片文件测试了一下,最高质量好象还不能满足不小于20K的要求,不明白为何有这个要求?



程序代码:
** Test.prg
DECLARE LONG StrDup                IN Shlwapi STRING@
DECLARE LONG GdipLoadImageFromFile IN Gdiplus.dll STRING, LONG@
DECLARE LONG GdipSaveImageToFile   IN Gdiplus.dll LONG, STRING, STRING, STRING
DECLARE LONG GdipDisposeImage      IN Gdiplus.dll LONG

#DEFINE CLSID_JPG          0h01F47C55041AD3119A730000F81EF32E
#DEFINE GUID_Quality       0hB5E45B1D4AFA2D459CDD5DB35105E7EB

*sInFile  = "C:\TEMP\Test\相片样本\032016100067.bmp"
*sInFile  = "C:\TEMP\Test\相片样本\032016100182.bmp"
sInFile  = "C:\TEMP\Test\相片样本\wujianxiong1212210850.bmp"
sOutFile = "C:\TEMP\Test\相片样本\temp.jpg"
_ImageConver(sInFile, sOutFile, 100)
of = CREATEOBJECT("form")
of.addobject("image1", "image")
of.image1.picture = sOutFile
of.image1.visible = .T.
SET COMPATIBLE ON
of.caption = "前 " + TRANSFORM(ROUND(FSIZE(sInFile) /1024,1)) + " KB  ";
           + "后 " + TRANSFORM(ROUND(FSIZE(sOutFile)/1024,1)) + " KB"
SET COMPATIBLE OFF
of.show(1)
CLEAR RESOURCES
RETURN

FUNCTION _ImageConver(sInFile, sOutFile, nValue)
    LOCAL pImage, sValue, tEP
    pImage = 0
    GdipLoadImageFromFile(STRCONV(sInFile + 0h00, 5), @pImage)
    IF pImage > 0
        sValue  = BINTOC(nValue, "4RS")
        tEP = BINTOC(1, "4RS");
            + GUID_Quality;
            + BINTOC(1, "4RS");
            + BINTOC(4, "4RS");
            + BINTOC(StrDup(@sValue), "4RS")
        GdipSaveImageToFile(pImage, STRCONV(sOutFile + 0h00,5), CLSID_JPG, @tEP)
        GdipDisposeImage(pImage)
    ELSE
        MESSAGEBOX("载入图片 " + sInFile + " 失败", "提示")
    ENDIF
ENDFUNC



[此贴子已经被作者于2015-12-27 08:31编辑过]

收到的鲜花
  • flyingcat20082015-12-31 16:24 送鲜花  3朵   附言:好文章
2015-12-27 08:30
flyingcat2008
Rank: 2
来 自:湖南
等 级:论坛游民
帖 子:33
专家分:13
注 册:2008-7-28
得分:0 
两位大侠有心了,两位的高招,我受益匪浅。我采用TonyDeng版主的100%quality,刚好满足了我程序的要求,转换后的相片容量在22KB--27KB不等,此容量与大面积黑白色有关。对于我们使用刚好了。再次感谢你们!!!

2015-12-27 11:36
wengjl
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:108
帖 子:2175
专家分:3785
注 册:2007-4-27
得分:0 
以下是引用TonyDeng在2015-12-26 19:24:35的发言:

不能下载也

只求每天有一丁点儿的进步就可以了
2015-12-27 14:53
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
以下是引用wengjl在2015-12-27 14:53:11的发言:


不能下载也

https://bbs.bccn.net/attachment.php?aid=82939&k=59f062f3520aae6dafd640e03ac276d7&t=1451202526
2015-12-27 15:53



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




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

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