您好,我有此代码将 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');
?>
我想组合从 2013101.jpg 到 2013110.jpg 的 10 张图像,而不是给出我想要创建数组范围的每个文件名。
请帮我