Imagemagick Magick++;:使图像适合大小

Imagemagick Magick++;:使图像适合大小,imagemagick,magick++,Imagemagick,Magick++,如何使图像符合精确尺寸?我不想扭曲图像,我需要把它放在一个黑色背景上,它需要居中,无论是从一边到另一边还是从上到下。它们最初是大图像,我需要把它们缩小到25像素宽,32像素高 现在,我只是简单地检查宽度和高度,并找出哪些需要调整大小: 初始化magick(*argv); 图像img(imgFilename); //检查图像尺寸 if(img.columns()>img.rows()){ //宽图像! 如果(img.columns()>25){ 调整图像大小(Magick::Geometry(“2

如何使图像符合精确尺寸?我不想扭曲图像,我需要把它放在一个黑色背景上,它需要居中,无论是从一边到另一边还是从上到下。它们最初是大图像,我需要把它们缩小到25像素宽,32像素高

现在,我只是简单地检查宽度和高度,并找出哪些需要调整大小:

初始化magick(*argv);
图像img(imgFilename);
//检查图像尺寸
if(img.columns()>img.rows()){
//宽图像!
如果(img.columns()>25){
调整图像大小(Magick::Geometry(“25x”);
}
}否则{
//高大的形象!
如果(img.rows()>32){
调整图像大小(Magick::Geometry(“x32”);
}
}
我必须相信,有一种更简单/更好的方法可以做到这一点,同时也可以将它安装到一个25像素宽32像素高的画布上,中间有图像。我该怎么做


顺便说一下,我意识到上面的代码有问题。。。如果img.columns()==img.rows(),则它总是转到第二种情况,并将图像大小设置为32高,这是不正确的,因为这将导致img.columns()也转到32高,超出所需的25像素。这是我假设的一个图像适合照顾。我只是不知道怎么做。

我认为评估图像列和行可能是不必要的。支持附加限定符,如(
)“仅在图像较大时调整大小”和(
^
)“裁剪/填充到大小”。如果需要,您应该能够使用一组限定符来调整图像大小,并扩展图像以使其适合

img.resize(Magick::Geometry(“25x32>^”);
图像范围(Magick::Geometry(“25x32”)、Magick::Center重力);
当然,您也可以在
extent
方法中应用限定符。我建议使用
convert
实用程序和文档对它们进行试验