GD関数合成画像問題(jpg1枚、png1枚)

WBOY
リリース: 2016-06-23 14:21:36
オリジナル
923 人が閲覧しました

RT:
PHP を使用して 2 つの写真を結合するにはどうすればよいですか?
1 つは png の透明なベース画像で、もう 1 つは jpg 画像です

次に、jpg 画像を png のベース画像に結合して、新しい画像を作成したいと思います。

また、結合された画像は同じサイズでなければなりませんか?それともベースマップをもっと大きくすることはできますか?

私もインターネットでいくつかの方法を見つけましたが、どれもうまくいかないようです

  $path_1 = "topic_assets/522592b5d61cb_ip4.jpg";  $path_2 = "topic_assets/topic_border_android.png";	//echo $path_1;	$image=imagecreatefromjpeg($path_1);  	$wm=imagecreatefrompng($path_2);   	$im=imagecreatetruecolor(imagesx($image),imagesy($image));   	imagecopy($im,$image,0,0,0,0,imagesx($image),imagesy($image));   	imagecopy($im,$wm,0,0,0,0,imagesx($wm),imagesy($wm));
ログイン後にコピー


私も同じようなことをしたことがあります、解決策を教えてください...


ディスカッション(解決策)に返信します

GD には多くの機能が用意されているので、すべて試してみる必要があります。これはどうでしょうか?

$t1 = 'http://avatar.csdn.net/1/C/9/1_mahuatengbc.jpg';$t2 = 'http://avatar.csdn.net/2/5/B/1_yykr1987.jpg';$im1 = imagecreatefromjpeg($t1);$im2 = imagecreatefromjpeg($t2);imagecopymerge($im1, $im2, 35, 5, 0, 0, imagesx($im2), imagesy($im2), 63);imagejpeg($im1);
ログイン後にコピー
ログイン後にコピー

GD にはたくさんの機能があるので、すべて試してみる必要があります。これはどうでしょうか?

$t1 = 'http://avatar.csdn.net/1/C/9/1_mahuatengbc.jpg';$t2 = 'http://avatar.csdn.net/2/5/B/1_yykr1987.jpg';$im1 = imagecreatefromjpeg($t1);$im2 = imagecreatefromjpeg($t2);imagecopymerge($im1, $im2, 35, 5, 0, 0, imagesx($im2), imagesy($im2), 63);imagejpeg($im1);
ログイン後にコピー
ログイン後にコピー

モデレータさん、ありがとうございます、まずは試してみます!

エマ、あなたは私を死ぬほど怖がらせました!
私の要件はjpgとpngで、pngがベース画像であり、合成もpng形式です。

モデレーターのアプローチに従って、以下に示すように、奇妙な文字化けが大量に表示されました



私のコードは次のようなものです:

$path_1 = "522592b5d61cb_ip4.jpg";	$path_2 = "topic_border_android.png";	$im1 = imagecreatefromjpeg($path_1);	$im2 = imagecreatefrompng($path_2);	imagecopymerge($im1, $im2, 35, 5, 0, 0, imagesx($im2), imagesy($im2), 63);	imagejpeg($im2);	imagedestroy($im2);
ログイン後にコピー
ログイン後にコピー

どこに問題があるのか​​わかりません....

Emma,死ぬほど怖いよ!
私の要件はjpgとpngで、pngがベース画像であり、合成もpng形式です。

モデレーターのアプローチによると、以下に示すように、奇妙な文字化けが大量に表示されました



私のコードは次のようなものです:

$path_1 = "522592b5d61cb_ip4.jpg";	$path_2 = "topic_border_android.png";	$im1 = imagecreatefromjpeg($path_1);	$im2 = imagecreatefrompng($path_2);	imagecopymerge($im1, $im2, 35, 5, 0, 0, imagesx($im2), imagesy($im2), 63);	imagejpeg($im2);	imagedestroy($im2);
ログイン後にコピー
ログイン後にコピー

どこに問題があるのか​​わかりません....

Imagejpeg は jpg を生成しますのフォーマット画像。 Imgpng は、png 形式で画像を生成します。

「奇妙な」コードが表示される理由は、ヘッダーが追加されていないため、バイナリ データとして直接出力されるためです。
header("content-type:image/png"); を追加します。
次に、imgpng を使用して画像を生成します。

必ずしもそうとは限りません
BOM ヘッダーに関連している可能性もあります

上階ではありがとうございますが、写真は保存されていませんか?
ブラウザでこの写真を見たんですが、フォルダー内にこの写真がありません。合成写真なので保存できませんか?

そして、この写真の後ろに黒い影があります、これを取り除くことはできますか?

imagejpeg($im2, '画像ファイル名');

    header("content-type:image/png");    //合成两张图片    $targetFileDark="522ec9db6b46b"; 	$dest = imagecreatefrompng('topic_border_android.png');	$src = imagecreatefromjpeg($targetFileDark."_ip4.jpg");		$newim = imagecreatetruecolor(103,92);	$back = imagecolorallocatealpha($newim, 0, 0, 0, 127);	imagefilledrectangle($src, 0, 0, 98, 58, $back);			imagealphablending($dest, false);	imagesavealpha($dest, true);	imagecopymerge($dest, $src, 36,11,0,0,imagesx($src), imagesy($src),100);	imagepng($dest,$targetFileDark."_android.png");	imagedestroy($dest);	imagedestroy($src);
ログイン後にコピー

昨日の午後ずっと勉強して、やっと理解できました

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート