使用PHP将450x450的方形图像分成9个150x150的图像

时间:2014-07-22 14:43:24

标签: php imagecreatefrompng

我的源图像为450x450像素。我想用PHP将它们分成9个150x150的peices 我使用以下代码。
我得到9张图片,但裁剪不合适。 这是屏幕截图:

enter image description here

最后一个是我正在使用的源图像 这是我的代码。

<?php

$targ_w = $targ_h = 150;
$jpeg_quality = 25;

$src = "puzzleimages/puzzle2.jpg";

$y = 0;
$y2 = 150;
$x = 0;
$x2 = 150;

$i = 3;
$name = 0;
while( $i-- ){
    $j = 3;

    while( $j-- ){


        $img_r = imagecreatefromjpeg($src);
        $dst_r = ImageCreateTrueColor( $targ_w, $targ_h );

        imagecopyresampled($dst_r,$img_r,0,0,$x,$y,$targ_w,$targ_h,$x2,$y2);

        //header('Content-type: image/jpeg');
        imagejpeg($dst_r,'puzzleimages/'.++$name.'.jpg', $jpeg_quality);

        $x += 150;
        $x2 += 150;

    }


    $y += 150;
    $y2 += 150;
    $x = 0;
    $x2 = 150;

}

?>

任何人都可以建议出现问题吗?

2 个答案:

答案 0 :(得分:2)

我认为您不需要继续更改源宽度/高度,它应始终为150。试一试:

imagecopyresampled($dst_r,$img_r,0,0,$x,$y,$targ_w,$targ_h,$targ_w,$targ_h);

答案 1 :(得分:1)

bool imagecopyresampled ( resource $dst_image , resource $src_image , int $dst_x , int$dst_y , int $src_x , int $src_y , int $dst_w , int $dst_h , int $src_w , int $src_h )

请参阅Php文档,需要更改的唯一参数是src_xsrc_y。由于您更改了x2y2,因此将应用以下内容:

  

如果源和目标坐标以及宽度和高度不同,将执行图像片段的适当拉伸或收缩。