-1

透かしを画像の下に配置したいので、画像の全体的な高さが拡大するはずです。

これが私のコードです:

$img_width=imagesx($img);
$img_height=imagesy($img);
$watermark=imagecreatefrompng($watermark);  
$watermark_width=imagesx($watermark);  
$watermark_height=imagesy($watermark);  
$image=imagecreatetruecolor($watermark_width, $watermark_height);  
imagealphablending($image, false);
$dest_x=$img_width-$watermark_width-5;
$dest_y=$img_height-$watermark_height+1;
imagecopy($img, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height);
imagesavealpha($img, true);

watermark_width と height で遊んでみました。これは可能ですか?

4

1 に答える 1

1
  1. 寸法のある画像を作成する必要があります。

    imagecreatetruecolor(max($img_width,$watermark_width), $img_height + $watermark_height + $margin);

  2. 次に、画像をコピーします(0,0)

  3. 最後に、透かしをコピーします(0,$img_height + $margin)

($marginは画像と透かしの間のスペース (ピクセル単位))

編集

$margin    = 5;
$img       = imagecreatefrompng($img_path);
$watermark = imagecreatefrompng($watermark_path);

$img_width  = imagesx($img);
$img_height = imagesy($img);

$watermark_width  = imagesx($watermark);
$watermark_height = imagesy($watermark);

$output_width  = max($img_width, $watermark_width);
$output_height = $img_height + $watermark_height + $margin;

$output = imagecreatetruecolor($output_width, $output_height);
imagesavealpha($output, true);
imagealphablending($output, false);
imagerectangle($output, 0, 0, $output_width, $output_height, imagecolorallocatealpha($output, 0, 0, 0, 127));

imagecopy($output, $img, 0, 0, 0, 0, $img_width, $img_height);
imagecopy($output, $watermark, 0, $img_height + $margin, 0, 0, $watermark_width, $watermark_height);

imagepng($output, $path_to_save); // use null to output
imagedestroy($img);
imagedestroy($output);
imagedestroy($watermark);
于 2012-10-21T12:00:09.407 に答える