将图片与 php 数组相结合,而不是给出每个文件名


Combining picture with php array instead of giving eachfile name

您好,我有这段代码将jpeg文件合并为一个:

<?php
function mergeImages($images) {
        $imageData = array();
        $len = count($images);
        $wc = ceil(sqrt($len));
        $hc = floor(sqrt($len/2));
        $maxW = array();
        $maxH = array();
        for($i = 0; $i < $len; $i++) {
                $imageData[$i] = getimagesize($images[$i]);
                $found = false;
                for($j = 0; $j < $i; $j++) {
                        if ( $imageData[$maxW[$j]][0] < $imageData[$i][0] ) {
                                $farr = $j > 0 ? array_slice($maxW, $j-1, $i) : array();
                                $maxW = array_merge($farr, array($i), array_slice($maxW, $j));
                                $found = true;
                                break;
                        }
                }
                if ( !$found ) {
                        $maxW[$i] = $i;
                }
                $found = false;
                for($j = 0; $j < $i; $j++) {
                        if ( $imageData[$maxH[$j]][1] < $imageData[$i][1] ) {
                                $farr = $j > 0 ? array_slice($maxH, $j-1, $i) : array();
                                $maxH = array_merge($farr, array($i), array_slice($maxH, $j));
                                $found = true;
                                break;
                        }
                }
                if ( !$found ) {
                        $maxH[$i] = $i;
                }
        }
        $width = 0;
        for($i = 0; $i < $wc; $i++) {
                $width += $imageData[$maxW[$i]][0];
        }
        $height = 0;
        for($i = 0; $i < $hc; $i++) {
                $height += $imageData[$maxH[$i]][1];
        }
        $im = imagecreatetruecolor($width, $height);
        $wCnt = 0;
        $startWFrom = 0;
        $startHFrom = 0;
        for( $i = 0; $i < $len; $i++ ) {
                $tmp = imagecreatefromjpeg($images[$i]);
                imagecopyresampled($im, $tmp, $startWFrom, $startHFrom, 0, 0, $imageData[$i][0], $imageData[$i][1], $imageData[$i][0], $imageData[$i][1]);
                $wCnt++;
                if ( $wCnt == $wc ) {
                        $startWFrom = 0;
                        $startHFrom += $imageData[$maxH[0]][1];
                        $wCnt = 0;
                } else {
                        $startWFrom += $imageData[$i][0];
                }
        }

        return $im;
}
$im = mergeImages(array('2013101.jpg', '2013102.jpg'));
header('Content-type: image/jpg');
?>

我想将 10 张从 2013101.jpg 到 2013110 的图像组合在一起.jpg而不是给出我想制作数组范围的每个文件名。

请帮助我

我想你可以使用一个简单的 for 循环吗?

for ($i = 2013101; $i < 2013110; $i++) {
    $im = mergeImages(array("$i.jpg", ''. $i+1 .'.jpg')); 
}

这将结合 101 与 102、102 与 103 等。如果需要将 101 与 102 组合,将 103 与 104 组合,而不将 102 与 103 组合,则需要在 for 声明中将 $i 与 2 递增