在PHP中将图像保存到目录?

时间:2018-04-24 13:25:08

标签: php image

这里我将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.

谢谢你!

0 个答案:

没有答案