标题:vfp9报表保存为高分辨率图片
取消只看楼主
radiofan
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:11
帖 子:466
专家分:696
注 册:2006-7-30
得分:0 
以下是引用吹水佬在2019-8-1 08:54:22的发言:


试了一下显示器设置到1920*1080,报表预览与BMP显示无差别。



这就奇怪了! 我即使是在1920*1080分辨率下设计报表,预览和打印就不正常!但是如下代码测试,预览不正常,图片正常(非EMF格式,预览与图片都不正常),奇怪!

DO pros\endprint.prg

oListener = Createobject("ReportListener")

oListener.ListenerType=1

Report FORM reports\report_cght.frx Object oListener NOWAIT

oListener.OutputPage(1,"d:\ttt.emf", 100)

我按此(https://)更新了,还是如此!


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

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

系统显示有无设置了缩放,windows的缩放对VFP的显示好象有点问题。


等我新电脑到了再试试看是否有这个问题!多谢!

关于提高输出图片的清晰度能提供一些帮助吗?我原来一直调用word,然后打印成图片,效果不错,但是,由于用户offic版本可能不一致,所以会出现一些问题,不方便!最近才改成vfp9生成图片,其他都够用了,唯有图片像素偏低,不满意!

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

系统显示有无设置了缩放 ???? 您指的是windows系统显示缩放,这个倒是没有注意,在哪里设置?
2019-08-01 09:11
radiofan
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:11
帖 子:466
专家分:696
注 册:2006-7-30
得分:0 
以下是引用吹水佬在2019-8-1 08:56:56的发言:

系统显示有无设置了缩放,windows的缩放对VFP的显示好象有点问题。



天哪,果真如此! 非常感谢!!!  我设置成150%

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

2019-08-01 09:16
radiofan
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:11
帖 子:466
专家分:696
注 册:2006-7-30
得分:0 
求大神指点!
2019-08-01 15:20
radiofan
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:11
帖 子:466
专家分:696
注 册:2006-7-30
得分:0 
以下是引用吹水佬在2019-8-1 15:37:32的发言:


不是搞定了吗


嗨,预览打印搞定了!

但是,输出图像的问题还是没有解决呀!
它默认的几个格式的输出图片都是经过压缩的,像素太低!

报表监听器类原始功能所提供的图像页包含了多种文件类型,但它所支持的这些图像类型格式受到某些默认设置的限制。如这个例子中的 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 16:54编辑过]

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

图像文件的压缩与图像的像素无关系吧,BMP格式不是压缩的。
生成的图片像素大小由VFP报表格式决定。
报表文件图片像素的原始数据不变,用算法去放大像素就有点复杂,也不容易做得好,简单的放大或会“马赛克”化了。


我试过了,BMP与JPG格式无异,打印出来的效果与报表直接打印机打印的效果差距很大!所以,我认为,这里它输出的图像是被处理过的,也就是它保存时的quality值应该不是100,我需要得到原始的图像!
GDI + 绘制的图像是非常清晰的,这个可以从预览图像中看出!

我在研究reportlistener基类,看用其派生类能否实现……

谢谢回复!希望能够得到您的帮助!

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

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

观察了一下,用 GetPageWidth()、GetPageHeight() 得到的页面分分辨率比 OutputPage() 输出图像文件的分辨率大10倍,OutputPage()的输出看似是缩小了。


等会我找下代码,哪里我好像是看到过,被除以10了……
2019-08-02 08:23
radiofan
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:11
帖 子:466
专家分:696
注 册:2006-7-30
得分:0 
以下是引用吹水佬在2019-8-1 22:09:03的发言:

观察了一下,用 GetPageWidth()、GetPageHeight() 得到的页面分分辨率比 OutputPage() 输出图像文件的分辨率大10倍,OutputPage()的输出看似是缩小了。


请抽空看看: _reportlistener.vcx中的gfxoutputclip.saveimageclips

Provides copy-to-image file for designated page regions during a report run, so you can export the rendered regions for embedding in output targets. Alternative to xmlDisplayListener.copyImageFilesToExternalFileLocation handling custom-rendered content.

这个似乎不是那么回事,是给xmlDisplayListener.copyImageFilesToExternalFileLocation用的

[此贴子已经被作者于2019-8-2 10:26编辑过]

2019-08-02 09:38
radiofan
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:11
帖 子:466
专家分:696
注 册:2006-7-30
得分:0 
以下是引用吹水佬在2019-8-2 13:54:05的发言:

用GDI+ api 创建图形句柄,封装ReportListener重载OutputPage,在OutputPage里面处理生成图片文件,这样应该可以改变图片的分辨率。
试试写个简单示例参考


期待你的示例! 拜托!
2019-08-02 14:56



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




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

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