2017-08-30 9 views
0

名刺の画像は1073X672の解像度で複数あります。今私は、1枚のシート5366X3378(5行5列)にすべての画像をマージして、25枚のカードを保存できるようにしたい。しかし、25枚のカードの後に​​、別のシートにレストカードを保存しておき、次の25枚を別のシートに残しておきたい。1枚の画像で複数の画像をマージする方法

私は以下のコードを書いていますが、このコードでは25枚の画像を含む1枚のシートしか生成していません。

Array ([0] => E:\idcarddata/finalcard/1.jpg [1] => 
E:\idcarddata/finalcard/2.jpg [2] => 
E:\idcarddata/finalcard/3.jpg [3] => 
E:\idcarddata/finalcard/4.jpg [4] => 
E:\idcarddata/finalcard/5.jpg [5] => 
E:\idcarddata/finalcard/6.jpg [6] => 
E:\idcarddata/finalcard/7.jpg [7] => 
E:\idcarddata/finalcard/8.jpg [8] => 
E:\idcarddata/finalcard/9.jpg [9] => 
E:\idcarddata/finalcard/10.jpg [10] => 
E:\idcarddata/finalcard/11.jpg [11] => 
E:\idcarddata/finalcard/12.jpg [12] => 
E:\idcarddata/finalcard/13.jpg [13] => 
E:\idcarddata/finalcard/14.jpg [14] => 
E:\idcarddata/finalcard/15.jpg [15] => 
E:\idcarddata/finalcard/16.jpg [16] => 
E:\idcarddata/finalcard/17.jpg [17] => 
E:\idcarddata/finalcard/18.jpg [18] => 
E:\idcarddata/finalcard/19.jpg [19] => 
E:\idcarddata/finalcard/20.jpg [20] => 
E:\idcarddata/finalcard/21.jpg [21] => 
E:\idcarddata/finalcard/22.jpg [22] => 
E:\idcarddata/finalcard/23.jpg [23] => 
E:\idcarddata/finalcard/24.jpg [24] => 
E:\idcarddata/finalcard/25.jpg [25] => 
E:\idcarddata/finalcard/26.jpg [26] => 
E:\idcarddata/finalcard/27.jpg [27] => 
E:\idcarddata/finalcard/28.jpg [28] => 
E:\idcarddata/finalcard/29.jpg [29] => 
E:\idcarddata/finalcard/30.jpg) 



    $mapImage = imagecreatetruecolor(5366, 3378); 
$bgColor = imagecolorallocate($mapImage, 255, 255, 255); 
imagefill($mapImage, 0, 0, $bgColor); 
$temp=1; 
foreach ($srcImagePaths as $index => $srcImagePath) 
{ 
$x = ($index % 5) * (1073 + 1) + 1; 
$y = floor($index/5) * (672 + 1) + 1; 
$tileImg = imagecreatefromjpeg($srcImagePath); 
imagecopy($mapImage, $tileImg, $x, $y, 0, 0, 1073, 672); 
imagedestroy($tileImg); 

if($temp%20==0) 
{ 
    $thumbImage = imagecreatetruecolor(5366, 3378); 
    imagecopyresampled($thumbImage, $mapImage, 0, 0, 0, 0, 5366, 3378, 5366, 3378); 
    header('Content-type: image/png'); 
    imagejpeg($thumbImage,dirname($_REQUEST['csvsheet'])."/finalcard/sheet".$temp.".jpg"); 
} 
$temp=$temp+1; 

OUTPUT enter image description here

答えて

1

あなたは25日の画像を襲った後、あなたがリセットすることができますカウント変数$iを使用してください。 また、次のシートを描画する前にmapImageをクリアするのを忘れました。

$mapImage = imagecreatetruecolor(5366, 3378); 
$bgColor = imagecolorallocate($mapImage, 255, 255, 255); 
imagefill($mapImage, 0, 0, $bgColor); 
$temp=1; 
$i = 0; 
foreach ($srcImagePaths as $index => $srcImagePath) 
{ 
$x = ($i % 5) * (1073 + 1) + 1; 
$y = floor($i/5) * (672 + 1) + 1; 
$tileImg = imagecreatefromjpeg($srcImagePath); 
imagecopy($mapImage, $tileImg, $x, $y, 0, 0, 1073, 672); 
imagedestroy($tileImg); 
$i++; 

if($i>=25 || $index==count($srcImagePaths)-1) 
{ 
    imagejpeg($mapImage,dirname($_REQUEST['csvsheet'])."/finalcard/sheet".$temp.".jpg"); 
    $temp++; 
    $i = 0; 
    imagefilledrectangle($mapImage, 0, 0, 5366, 3378, $bgColor); 
} 
} 
+0

ありがとうございます:) – prameshwer

関連する問題