这里我将2张图片合并为单张图片。
它正在成功显示图片imagejpeg($im);
,但我无法将图片保存在特定位置。imagejpeg($im,'images/downloadFile.jpg');
Php代码:
<?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('images/1.jpg', 'images/2.jpg'));
header('Content-type: image/jpg');
imagejpeg($im); //View image
imagejpeg($im,'images/downloadFile.jpg'); //Not Saved image
所需输出
cannot be displayed because it contains errors.
谢谢你!