我有一张被分成几部分的图像,64 行 x 64 列。每张图片为 256x256 像素。图片都是PNG。它们被命名为“Image--.png”,例如“Image-3-57”。行和列的编号从 0 而不是 1 开始。
我怎样才能将它重新组合成一个图像?理想情况下使用 BASH 和工具(我是系统管理员)虽然 PHP 也是可以接受的。
我有一张被分成几部分的图像,64 行 x 64 列。每张图片为 256x256 像素。图片都是PNG。它们被命名为“Image--.png”,例如“Image-3-57”。行和列的编号从 0 而不是 1 开始。
我怎样才能将它重新组合成一个图像?理想情况下使用 BASH 和工具(我是系统管理员)虽然 PHP 也是可以接受的。
好吧,如果你想使用 PHP,这不是很复杂。您需要的只是一些图像功能——imagecreate和imagecopy。如果您的 PNG 是半透明的,您还需要imagefilledrectangle来创建透明背景。在下面的代码中,我依赖于所有块大小相同的事实——因此像素大小必须能够除以块的数量。
<?php
$width = 256*64; //height of the big image, pixels
$height = 256*64;
$chunks_X = 64; //Number of chunks
$chunks_Y = 64; //Same for Y
$chuk_size_X = $width/$chunks_X; //Compute size of one chunk, will be needed in copying
$chuk_size_Y = $height/$chunks_Y;
$big = imagecreate($width, $height); //Create the big one
for($y=0; $y<$chunks_Y; $y++) {
for($x=0; $x<chunks_X; $x++) {
$chunk = imagecreatefrompng("Image-$x-$y.png");
imagecopy($big, $chunk,
$x*$chuk_size_X, //position where to place little image
$y*$chuk_size_Y,
0, //where to copy from on little image
0,
$chuk_size_X, //size of the copyed area - whole little image here
$chuk_size_Y,
);
imagedestroy($chunk); //Don't forget to clear memory
}
}
?>
这只是一个草稿。我不确定所有这些 xs 和 ys 以及其他细节。时间不早了,我累了。