java设置png dpi_设置PNG图片DPI 信息,保存为PDF(使用Magick),与OpenCV转换

目录

任务描述

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

解决方案

magick++

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

ubuntu 安装magic++库很简单:

sudo apt-get install libmagick++-dev

下面给出例程

talk is cheap, show me the code.

c++ 代码:

#include

#include

int main(int argc, char **argv)

{

magick::initializemagick(*argv);

magick::image image;

try{

image.read("./patternsboard1.png"); // read an image from directory

image.resolutionunits(magick::pixelspercentimeterresolution); // 设置分辨率单位为 像素/厘米

image.density("120x120"); // 纵、横分辨率都是 120 px/cm

image.write("./patternsboard3.pdf"); // 保存为pdf

}catch(magick::exception &erro_){

std::cout<< "caught exception:" << erro_.what() <<:endl>

return 1;

}

return 0;

}

使用 cmakelists.txt. 可以参考

project(try_magickpp)

cmake_minimum_required(version 2.8)

find_package(imagemagick components magick++)

include_directories(${imagemagick_include_dirs})

aux_source_directory(. src_list)

add_executable(${project_name} ${src_list})

target_link_libraries(${project_name} ${imagemagick_libraries})

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

与 opencv 配合

我们有从 opencv 处理后的cv::mat ,下面提供 从cv::mat 转为 magick::image (magick++ 的image类).

cv::mat cvimage;

cvimage = cv::imread("./patternsboard1.png" ,cv::imread_grayscale);

magick::image image(cvimage.cols,cvimage.rows,"i",magickcore::charpixel, (char *)cvimage.data);

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

相关链接

(cmake 配置magick++))

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值