[Qt Topic] – 二维绘图研习,做一个简单批量水印工具
作者:Jason Lee
日期:2010-05-02
平台:Qt SDK v2010.02.1 + Windows Xp
声明:文章作者仅在Intel软件网络和CSDN博客发表本文,如有转载,请注明出处
[1]二维绘图概览
Qt中的二维绘图是基于QPainter、QPaintEngine和QPaintDevice机制的:以QPaintEngine作为中间接口,使用QPainter在不同绘图设备上进行绘图操作,而QPaintDevice就是可使用QPainter进行绘图的二维空间。
使用QPainter可以在绘图设备上进行绘制以下类的实例:QImage、QBitmap、QIcon、QPixmap、QPicture等各种图像和QPoint、QLine、QPolygon等各种图形以及其它许多,难以列举。
目前QPaintDevice的子类有QWidget、QGLWidget、QImage、QPixmap、QGLPixelBuffer、QGLFrameBufferObject、QPicture、QPrinter。也就是说,可以使用QPainter对这些类的实例进行绘图操作。
[2]批量水印工具简单设想
第一,既然是批量处理,那么第一个要求是能够打开多个文件。在这里,我将之处理为打开一个文件夹下面所有可支持的图片,但并未继续递归深入地读取子文件夹。
第二,要有水印功能,就要求工具能够对打开的图片进行绘图操作。这一点比较简单,就是以上提到的使用QPainter在绘图设备上(比如QImage)进行绘图操作。针对这项功能,我只是简单地提供一个行文本框以输入要水印的文字。
第三,因为只是一个简单的、练手的小工具,所以我真的十分简单地实现了它的界面、功能。
第四,可以稍微讨论的扩展有:不只是可以用文本进行水印,也可以用图片,原理基本一致;可以继续递归地打开子文件夹中的图像;可以对QListWidget中的项进行右键处理,比如从列表中移除;其它……
[3]简单水印工具的实现
首先是布局代码。我简单地将界面分为3列:第一列用来打开目标文件夹,进而对里面的图片进行处理;第二列是图片列表,可以切换着观察图片;第三列就是图片浏览区域。以下是部分代码:
接着是打开目标文件夹,
然后读取该目录下所有可支持的图片:
并且浏览第一张图片:
到这里,我们实现了打开目标文件夹并将目录下所有图像文件添加进来的功能。
为了实现点击不同的图片Item能达到切换图片进行观看的功能,首先连接信号和槽:
通过QListWidget当前Item的切换信号连接到切换图像的槽,具体代码如下:
这就达到了切换浏览图片的目的了。
最后就是对所有图片进行水印处理了。
首先,要确保有用来水印的文字,markText就是此用途:
在有水印文本的条件下,使用QPainter对象来对QImage这个QPaintDevice的子类的实例进行绘图,本质就是简单地使用一下drawText成员函数:
在上面代码中,每次处理完一张图片都立即保存,而如果需要的话可以稍微改动下仅仅实现预览功能,待用户确认后再进行应用以及保存。
水印后的效果图如下:
由于本次的代码挺简单的,就不特地做上传了。
各位晚安!
分享到:
相关推荐
qt二维绘图,使用QT绘制基本图形,包括矩形、椭圆、圆角矩形等
qt二维OPENGL绘图源码
基于Qt的二维图像三维化代码,本人经过3个月的努力终于写出来了,现在跟大家共同分享一下
画布建立二维直角坐标系,添加一个标记在(0,0)点,可控制标记移动,可自由二次开发,压缩包内有有用法,不会的可以私聊我
在线下载Google地图 影像 矢量切片和地形晕眩图,实时显示,如果下载后编译无法通过,请项目中的文件移除后重新添加,VS2015+qt591
通过Qt+VS2008对surfer网格数据进行可视化显示
Qt自有一个混图的引擎,这个引擎的核心就是QPainter,我们知道QPainter在渲染二维图形和文字有很大的优势,而OpenGL是当前流行的三维渲染器,怎样才能将两者结合起来,制作更为丰富的应用程序?《C++GUI Programming...
可绘制多种丰富、美观的二维图表,甚至动态图表都可以绘制,需要的朋友可以下载
在Qt(5.5.1)中,利用qwt(6.1.2)实现二维曲线的绘制,并且具有动态、实时显示,以及通过鼠标滚轮实现坐标轴以及曲线的缩放等功能(在几个同事电脑上都试过,编译全部通过)。
Qt编写的给图片加水印的工具,选择图片所在文件夹,即可批量自动给图片加水印,加水印过程中没有用多线程,会卡住界面。但适合自己批量加水印的小工具。
通过RGB颜色表自己设置好colorbar,然后将数组通过程序绘图。pdf文档是RGB颜色对照表,PPT是自己建立的colorbar。带有测试数据,分数高是因为这些都是自己花了一个星期搞定的,自己不是专业人士,所以很费功夫。
一个QT4二维图形界面设计教程,是您对QT4有个基本认知
QT加载OSGearth,实现三维动态地球显示
QT写的一个简单绘图程序,适合学习QPAINTER类的用法,采用双缓冲,避免闪烁
水印是在造纸过程中通过改变纸浆的密度而形成的,水印分为2种,让纸变厚而形成的水印叫“黑水印”,让纸变薄而形成的水印叫“白水印”,迎光透视时可以清晰看到有明暗纹理的图形、人像或文字。通常纸币、证件、证券...
QT界面编写的用C语言二维数组的矩阵乘法程序
qt的二维实时动态曲线图,希望对那些需要的人有参考价值
qt做一个简易浏览器,实现打开网页,后退,前进,主页跳转功能
该文件的内容是qt的界面设计,不仅可以很好地指导初学者,对于qt开发人员来说也是参考资料