我想在没有imagemagick的系统中做这个伪代码,但我在系统中有Matlab 2016a和Java
convert 1.png 2.png +append result.png
假设您想要在如下所示的循环中连接,以便维度可能不匹配。 但是,所有对象1,2,...,N具有完全相同的尺寸。 然而,下面的循环同时连接两张图片,使尺寸与后续图像不同:bigImage vs new image。
iterationCounter=1;
result=0;
while(iterationCounter < 3)
imgRGB=imread(filenamePng); % Images 1,2, ..., N have same dimensions.
if (result==0)
result=imgRGB;
end
% http://stackoverflow.com/a/35915990/54964
if (ismatrix(result(:,:,1)))
heightRatio=size(result,1)/size(imgRGB,1);
wantedSize=int16([size(result,1), size(imgRGB,2)*heightRatio]);
imgResized=imresize(imgRGB, wantedSize);
result=[result, imgResized];
end
iterationCounter=iterationCounter+1;
end
其中输出是空白图片。
如何在Matlab / Java中水平追加图像?
答案 0 :(得分:1)
一般来说,当您水平连接两个图像并且它们都具有相同的行数时,以下代码可以解决这个问题:
%input - two images with different dimensions
I1 = imread('coins.png');
I2 = imread('cameraman.tif');
heightRatio = size(I1,1)/size(I2,1); %the ratio which well need to make the two images to have the same height
wantedSize = int16([size(I1,1), size(I2,2)*heightRatio]);
I2Resized = imresize(I2,wantedSize );
outIm = [I1,I2Resized];
但是,如果您需要更改I2尺寸以适合I1高度,您可以按如下方式执行imresize:
appendedIm = [I1;I2];
如果您需要垂直连接,可以使用:
function printContent(el,tble,img) {
var printcontent = document.getElementById(el).innerHTML
+" <div class='row'><span class='glyphicon glyphicon-tasks'></span><b></b></div>"
+ document.getElementById(tble).innerHTML
+ document.getElementById(img).innerHTML;
var w = window.open();
$(w.document.body).html(printcontent);
w.print();
}
答案 1 :(得分:1)
这应该有效:
imwrite([imread('1.png') imread('2.png')], '12.png');
注意:它们应具有相同的宽度/高度,具体取决于您的附加方式。