Ich versuche, zwei Bilder mit PHP zusammenzuführen.
Zum Beispiel ... wie würde ich vorgehen, um Bild eins über Bild zwei zu platzieren oder mit einfachem PHP zusammenzuführen? Ich habe etwas wie Wasserzeichen ausprobiert, aber es scheint nicht zu funktionieren.
Bild Eins
Bild zwei
... und ist daraus etwas geworden? ENDERGEBNIS:
<canvas>
Element . Das gerenderte Bild kann auch von Benutzern heruntergeladen werden, wie Sie gesagt haben.Antworten:
Ich habe es von einem zum Laufen gebracht, den ich gemacht habe.
<?php $dest = imagecreatefrompng('vinyl.png'); $src = imagecreatefromjpeg('cover2.jpg'); imagealphablending($dest, false); imagesavealpha($dest, true); imagecopymerge($dest, $src, 10, 9, 0, 0, 181, 180, 100); //have to play with these numbers for it to work for you, etc. header('Content-Type: image/png'); imagepng($dest); imagedestroy($dest); imagedestroy($src); ?>
quelle
Bei der Frage geht es um das Zusammenführen von zwei Bildern. In diesem Fall sollten Sie dies jedoch nicht tun. Sie sollten Content Image (dh Cover) in
<img />
Tag und Style Image in CSS einfügen. Warum?Verwenden Sie also einen sehr einfachen Code:
<div class="cover"> <img src="/content/images/covers/movin-mountains.png" alt="Moving mountains by Pneuma" width="100" height="100" /> </div> .cover { padding: 10px; padding-right: 100px; background: url(/style/images/cover-background.png) no-repeat; }
quelle
ImageArtist ist ein reiner GD-Wrapper, der von mir verfasst wurde. Auf diese Weise können Sie komplexe Bildmanipulationen wahnsinnig einfach durchführen, da Ihre Fragenlösung mit dieser leistungsstarken Bibliothek in nur wenigen Schritten durchgeführt werden kann.
Hier ist ein Beispielcode.
$img1 = new Image("./cover.jpg"); $img2 = new Image("./box.png"); $img2->merge($img1,9,9); $img2->save("./merged.png",IMAGETYPE_PNG);
So sieht mein Ergebnis aus.
quelle
Sie können meine Funktion zum horizontalen oder vertikalen Zusammenführen von Bildern ausprobieren, ohne das Bildverhältnis zu ändern. einfach kopieren einfügen wird funktionieren.
function merge($filename_x, $filename_y, $filename_result, $mergeType = 0) { //$mergeType 0 for horizandal merge 1 for vertical merge // Get dimensions for specified images list($width_x, $height_x) = getimagesize($filename_x); list($width_y, $height_y) = getimagesize($filename_y); $lowerFileName = strtolower($filename_x); if(substr_count($lowerFileName, '.jpg')>0 || substr_count($lowerFileName, '.jpeg')>0){ $image_x = imagecreatefromjpeg($filename_x); }else if(substr_count($lowerFileName, '.png')>0){ $image_x = imagecreatefrompng($filename_x); }else if(substr_count($lowerFileName, '.gif')>0){ $image_x = imagecreatefromgif($filename_x); } $lowerFileName = strtolower($filename_y); if(substr_count($lowerFileName, '.jpg')>0 || substr_count($lowerFileName, '.jpeg')>0){ $image_y = imagecreatefromjpeg($filename_y); }else if(substr_count($lowerFileName, '.png')>0){ $image_y = imagecreatefrompng($filename_y); }else if(substr_count($lowerFileName, '.gif')>0){ $image_y = imagecreatefromgif($filename_y); } if($mergeType==0){ //for horizandal merge if($height_y<$height_x){ $new_height = $height_y; $new_x_height = $new_height; $precentageReduced = ($height_x - $new_height)/($height_x/100); $new_x_width = ceil($width_x - (($width_x/100) * $precentageReduced)); $tmp = imagecreatetruecolor($new_x_width, $new_x_height); imagecopyresampled($tmp, $image_x, 0, 0, 0, 0, $new_x_width, $new_x_height, $width_x, $height_x); $image_x = $tmp; $height_x = $new_x_height; $width_x = $new_x_width; }else{ $new_height = $height_x; $new_y_height = $new_height; $precentageReduced = ($height_y - $new_height)/($height_y/100); $new_y_width = ceil($width_y - (($width_y/100) * $precentageReduced)); $tmp = imagecreatetruecolor($new_y_width, $new_y_height); imagecopyresampled($tmp, $image_y, 0, 0, 0, 0, $new_y_width, $new_y_height, $width_y, $height_y); $image_y = $tmp; $height_y = $new_y_height; $width_y = $new_y_width; } $new_width = $width_x + $width_y; $image = imagecreatetruecolor($new_width, $new_height); imagecopy($image, $image_x, 0, 0, 0, 0, $width_x, $height_x); imagecopy($image, $image_y, $width_x, 0, 0, 0, $width_y, $height_y); }else{ //for verical merge if($width_y<$width_x){ $new_width = $width_y; $new_x_width = $new_width; $precentageReduced = ($width_x - $new_width)/($width_x/100); $new_x_height = ceil($height_x - (($height_x/100) * $precentageReduced)); $tmp = imagecreatetruecolor($new_x_width, $new_x_height); imagecopyresampled($tmp, $image_x, 0, 0, 0, 0, $new_x_width, $new_x_height, $width_x, $height_x); $image_x = $tmp; $width_x = $new_x_width; $height_x = $new_x_height; }else{ $new_width = $width_x; $new_y_width = $new_width; $precentageReduced = ($width_y - $new_width)/($width_y/100); $new_y_height = ceil($height_y - (($height_y/100) * $precentageReduced)); $tmp = imagecreatetruecolor($new_y_width, $new_y_height); imagecopyresampled($tmp, $image_y, 0, 0, 0, 0, $new_y_width, $new_y_height, $width_y, $height_y); $image_y = $tmp; $width_y = $new_y_width; $height_y = $new_y_height; } $new_height = $height_x + $height_y; $image = imagecreatetruecolor($new_width, $new_height); imagecopy($image, $image_x, 0, 0, 0, 0, $width_x, $height_x); imagecopy($image, $image_y, 0, $height_x, 0, 0, $width_y, $height_y); } $lowerFileName = strtolower($filename_result); if(substr_count($lowerFileName, '.jpg')>0 || substr_count($lowerFileName, '.jpeg')>0){ imagejpeg($image, $filename_result); }else if(substr_count($lowerFileName, '.png')>0){ imagepng($image, $filename_result); }else if(substr_count($lowerFileName, '.gif')>0){ imagegif($image, $filename_result); } // Clean up imagedestroy($image); imagedestroy($image_x); imagedestroy($image_y); } merge('images/h_large.jpg', 'images/v_large.jpg', 'images/merged_har.jpg',0); //merge horizontally merge('images/h_large.jpg', 'images/v_large.jpg', 'images/merged.jpg',1); //merge vertically
quelle
Verwenden Sie die GD-Bibliothek oder ImageMagick. Ich habe 'PHP GD Merge Images' gegoogelt und mehrere Artikel dazu erhalten. In der Vergangenheit habe ich ein großes leeres Bild erstellt und dann imagecopymerge () verwendet, um diese Bilder in mein ursprüngliches leeres Bild einzufügen. In den Artikeln auf Google finden Sie einen Quellcode, den Sie sofort verwenden können.
quelle
Sie können dies mit der ImageMagick- Erweiterung tun . Ich vermute, dass die Methode combinImages () das tut, was Sie wollen.
quelle
Die GD Image Manipulation Library in PHP ist wahrscheinlich die beste für die Arbeit mit Bildern in PHP. Probieren Sie eine der Imagecopy-Funktionen aus (Imagecopy, Imagecopymerge, ...). Jedes von ihnen kombiniert 2 Bilder auf unterschiedliche Weise. Weitere Informationen finden Sie in der PHP-Dokumentation zu Imagecopy .
quelle
Füge zwei Bild-PNG und JPG / PNG zusammen [Bildmaskierung]
//URL or Local path $src_url = '1.png'; $dest_url = '2.jpg'; $src = imagecreatefrompng($src_url); $dest1 = imagecreatefromjpeg($dest_url); //if you want to make same size list($width, $height) = getimagesize($dest_url); list($newWidth, $newHeight) = getimagesize($src_url); $dest = imagecreatetruecolor($newWidth, $newHeight); imagecopyresampled($dest, $dest1, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height); list($src_w, $src_h) = getimagesize($src_url); //merger with same size $this->imagecopymerge_alpha($dest, $src, 0, 0, 0, 0, $src_w, $src_h, 100); //show output on browser header('Content-Type: image/png'); imagejpeg($dest);
imagecopymerge_alpha
function imagecopymerge_alpha($dst_im, $src_im, $dst_x, $dst_y, $src_x, $src_y, $src_w, $src_h, $pct) { $cut = imagecreatetruecolor($src_w, $src_h); imagecopy($cut, $dst_im, 0, 0, $dst_x, $dst_y, $src_w, $src_h); imagecopy($cut, $src_im, 0, 0, $src_x, $src_y, $src_w, $src_h); imagecopymerge($dst_im, $cut, $dst_x, $dst_y, 0, 0, $src_w, $src_h, $pct); }
quelle