经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » C++ » 查看文章
设置PNG图片DPI 信息,保存为PDF(使用Magick),与OpenCV转换
来源:cnblogs  作者:行者孙  时间:2018/12/7 9:33:27  对本文有异议

目录

任务描述

我有这样一个需求,读取一张格式为PNG 或者 Jpeg 的图片, 保存为可以可以直接打印的大小,要求编为一个小程序。因为通常情况下图像大小如1024*512 是像素尺寸,要想打印出来是需要设置 DPI(dots per inch),意思是每英寸上有多少个点(像素)。为了打印方便还可以保存为PDF。

解决方案

Magick++

Magick++ 是著名开源图片处理库ImageMagick提供的 C++库。在命令行可以直接使用相关 ImageMagick 的命令直接完成上述任务。要是C++编程完成需要调用 Magick++ 的API。

Ubuntu 安装magic++库很简单:

  1. sudo apt-get install libmagick++-dev

下面给出例程

Talk is cheap, show me the code.

C++ 代码:

  1. #include <iostream>
  2. #include <Magick++.h>
  3. int main(int argc, char **argv)
  4. {
  5. Magick::InitializeMagick(*argv);
  6. Magick::Image image;
  7. try{
  8. image.read("./patternsBoard1.png"); // read an image from directory
  9. image.resolutionUnits(Magick::PixelsPerCentimeterResolution); // 设置分辨率单位为 像素/厘米
  10. image.density("120x120"); // 纵、横分辨率都是 120 px/cm
  11. image.write("./patternsBoard3.pdf"); // 保存为pdf
  12. }catch(Magick::Exception &erro_){
  13. std::cout<< "Caught exception:" << erro_.what() <<std::endl;
  14. return 1;
  15. }
  16. return 0;
  17. }

使用 CMakeLists.txt. 可以参考 1

  1. project(try_magickpp)
  2. cmake_minimum_required(VERSION 2.8)
  3. find_package(ImageMagick COMPONENTS Magick++)
  4. include_directories(${ImageMagick_INCLUDE_DIRS})
  5. aux_source_directory(. SRC_LIST)
  6. add_executable(${PROJECT_NAME} ${SRC_LIST})
  7. target_link_libraries(${PROJECT_NAME} ${ImageMagick_LIBRARIES})

如此,可以看到读入的图片文件保存为 pdf,并且设置的DPI,可以打印出想要的大小。

与 Opencv 配合

我们有从 Opencv 处理后的cv::Mat ,下面提供 从cv::Mat 转为 Magick::Image (Magick++ 的Image类)2.

  1. cv::Mat cvimage;
  2. cvimage = cv::imread("./patternsBoard1.png" ,cv::IMREAD_GRAYSCALE);
  3. Magick::Image image(cvimage.cols,cvimage.rows,"I",MagickCore::CharPixel, (char *)cvimage.data);

当然,如果要使用这段代码是需include OpenCV的头,并且需要在CMakeLists.txt 中指明链接OpenCV的库。

相关链接


  1. (CMake 配置Magick++)https://stackoverflow.com/questions/7902916/set-path-in-cmake-c-imagemagick)?

  2. http://blog.csdn.net/panda1234lee/article/details/71439288?

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号