标题:vfp9报表保存为高分辨率图片
取消只看楼主
radiofan
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:11
帖 子:466
专家分:696
注 册:2006-7-30
结帖率:76.47%
 问题点数:0 回复次数:24 
vfp9报表保存为高分辨率图片
oListener = Createobject("ReportListener")
oListener.ListenerType=1
Report FORM reports\report_cght.frx Object oListener
For nPageIndex=1 To oListener.PageTotal
      cOutputFile = "tmp"+Trans(nPageIndex)+".jpg"
      oListener.OutputPage(nPageIndex,cOutputFile, 102)
NEXT

默认输出的是压缩格式的图片,我想得到高分辨率的图片,请各位指点,谢谢!

vfp帮助文件中有说到:
报表监听器类原始功能所提供的图像页包含了多种文件类型,但它所支持的这些图像类型格式受到某些默认设置的限制。如这个例子中的 TIFF,报表监听器为了性能上的原因,提供的是压缩格式的 TIFF 文件。但是,你可以摆脱原始实现的设置所带来的限制。你可以给报表监听器提供一个 GDI+ 图形句柄,并在 OutputPage 方法中要求它将页绘制到这个设备中。然后你可以将这个结果保存为一个图像文件,这时你就可以使用非默认的规格。Visual FoxPro 提供了一个类来帮助你完成这种以及其它与 GDI+ 相关的任务。更多的信息,请参见 GDI+ API 包装基本类。

思路 ……
oReportListener=CREATEOBJECT("reportlistener")
oReportListener.listenertype=3
REPORT FORM reports\report_cght.frx OBJECT oReportListener

_Bitmap = NEWOBJECT("gpBitmap", "_GDIplus.vcx")
_Graphics = NEWOBJECT("gpGraphics", "_GDIplus.vcx")
_Graphics.CreateFromImage(_Bitmap)

oreportlistener.outputpage(1,‘你可以给报表监听器提供一个 GDI+图形句柄,并在 OutputPage 方法中要求它将页绘制到这个设备中’,1)   

_Bitmap.SaveToFile("Test.bmp", "image/png or bmp","quality=100")


求大神帮忙解决!

[此贴子已经被作者于2019-8-1 15:21编辑过]

搜索更多相关主题的帖子: 报表 图片 文件 监听 GDI 
2019-07-31 16:59
radiofan
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:11
帖 子:466
专家分:696
注 册:2006-7-30
得分:0 
以下是引用吹水佬在2019-8-1 05:52:03的发言:


“压缩格式”与“高分辨率”是什么关系?
如果想不压缩,输出BMP格式:
OutputPage方法的第3个参数(nDeviceType )为105时指定一个文件名,输出将作为一个 BMP 类型图像保存。


事实上BMP也是像素很低的,与其他几个文件格式一样!似乎都是被处理过的低像素图片!

—— 报表监听器类原始功能所提供的图像页包含了多种文件类型,但它所支持的这些图像类型格式受到某些默认设置的限制。如这个例子中的 TIFF,报表监听器为了性能上的原因,提供的是压缩格式的 TIFF 文件。

[此贴子已经被作者于2019-8-1 07:39编辑过]

2019-08-01 07:37
radiofan
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:11
帖 子:466
专家分:696
注 册:2006-7-30
得分:0 
以下是引用吹水佬在2019-8-1 05:52:03的发言:


“压缩格式”与“高分辨率”是什么关系?
如果想不压缩,输出BMP格式:
OutputPage方法的第3个参数(nDeviceType )为105时指定一个文件名,输出将作为一个 BMP 类型图像保存。

bmp格式
png格式
2019-08-01 07:48
radiofan
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:11
帖 子:466
专家分:696
注 册:2006-7-30
得分:0 
以下是引用吹水佬在2019-8-1 07:48:06的发言:

像素多少可能与VFP报表文件设计有关,如设计打印一个字符要用多少个像素,这是在报表设计时决定的吧?


不会,报表直接打印或者通过虚拟打印机打印成图片非常清楚!
虚拟打印机输出的png图片

[此贴子已经被作者于2019-8-1 07:59编辑过]

2019-08-01 07:51
radiofan
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:11
帖 子:466
专家分:696
注 册:2006-7-30
得分:0 
以下是引用吹水佬在2019-8-1 07:48:06的发言:

像素多少可能与VFP报表文件设计有关,如设计打印一个字符要用多少个像素,这是在报表设计时决定的吧?


思路有,但未实现 ……
oReportListener=CREATEOBJECT("reportlistener")
oReportListener.listenertype=3
REPORT FORM reports\report_cght.frx OBJECT oReportListener

_Bitmap = NEWOBJECT("gpBitmap", "_GDIplus.vcx")
_Graphics = NEWOBJECT("gpGraphics", "_GDIplus.vcx")
_Graphics.CreateFromImage(_Bitmap)

oreportlistener.outputpage(1,‘你可以给报表监听器提供一个 GDI+图形句柄,并在 OutputPage 方法中要求它将页绘制到这个设备中’,1)   

_Bitmap.SaveToFile("Test.bmp", "image/png or bmp","quality=100")
2019-08-01 08:02
radiofan
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:11
帖 子:466
专家分:696
注 册:2006-7-30
得分:0 
以下是引用吹水佬在2019-8-1 07:48:06的发言:

像素多少可能与VFP报表文件设计有关,如设计打印一个字符要用多少个像素,这是在报表设计时决定的吧?


还有,set reportbehavior 90时报表预览与输出都有问题,不知您是否有过研究!
详见:https://bbs.

.OutputPage(nPageIndex,cOutputFile, 100)  输出为EMF格式,输出的报表文件正常,其他格式文字都是放大的并溢出页面。

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

2019-08-01 08:08
radiofan
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:11
帖 子:466
专家分:696
注 册:2006-7-30
得分:0 
以下是引用吹水佬在2019-8-1 08:25:56的发言:

试了一下,报表预览与BMP屏幕显示效果分不出差别:
报表预览

BMP屏幕显示

测试代码
CREATE CURSOR tt (ss C(10), ff I)
FOR i = 1 TO 10
    INSERT INTO tt VALUES (PADL(i, 10, "0"), i)
ENDFOR
oRL = CREATEOBJECT("ReportListener")
oRL.ListenerType = 1
REPORT FORM 报表扩展功能示例.frx OBJECT oRL NOWAIT
oRL.OutputPage(1, "C:\temp\kkkk.bmp", 105)



我的分辨率设置在1600X900以下正常,以上就不正常!
2019-08-01 08:39
radiofan
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:11
帖 子:466
专家分:696
注 册:2006-7-30
得分:0 
以下是引用吹水佬在2019-8-1 08:37:33的发言:

set reportbehavior 80/90 都试过,未见异常
运行环境:
Win10_64位专业版_1903_18362.239
VFP9_SP2_7423


我的win8.1 64位
vfp9 sp2 7423
2019-08-01 08:42
radiofan
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:11
帖 子:466
专家分:696
注 册:2006-7-30
得分:0 
以下是引用吹水佬在2019-8-1 08:41:41的发言:

还有:报表文件字体格式:宋体
也可能与字库有关


没关系,都试过了!
2019-08-01 08:43
radiofan
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:11
帖 子:466
专家分:696
注 册:2006-7-30
得分:0 
以下是引用吹水佬在2019-8-1 08:41:41的发言:

还有:报表文件字体格……
也可能与字库有关


原来也没发现这些问题,最近台式机坏了,这几天是用笔记本编程的,预览报表时就发现了原来在台式机上运行正常的报表在笔记本上就出现了上述问题。
2019-08-01 08:52



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




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

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