| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 7642 人关注过本帖, 3 人收藏
标题:vfp9报表保存为高分辨率图片
只看楼主 加入收藏
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
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43182
注 册:2014-5-20
收藏
得分:0 
以下是引用radiofan在2019-8-1 15:20:19的发言:

求大神指点!

不是搞定了吗
2019-08-01 15:37
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
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43182
注 册:2014-5-20
收藏
得分:0 
图像文件的压缩与图像的像素无关系吧,BMP格式不是压缩的。
生成的图片像素大小由VFP报表格式决定。
报表文件图片像素的原始数据不变,用算法去放大像素就有点复杂,也不容易做得好,简单的放大或会“马赛克”化了。
2019-08-01 17:21
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
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43182
注 册:2014-5-20
收藏
得分:0 
用outputpage()输出到用GDI+创建的图形设备与输出到文件,输出的图像数据应该是一样的。
2019-08-01 19:36
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43182
注 册:2014-5-20
收藏
得分:0 
观察了一下,用 GetPageWidth()、GetPageHeight() 得到的页面分分辨率比 OutputPage() 输出图像文件的分辨率大10倍,OutputPage()的输出看似是缩小了。
2019-08-01 22:09
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
快速回复:vfp9报表保存为高分辨率图片
数据加载中...
 
   



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

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