GD scalanie/łączenie obrazów

GD scalanie/łączenie obrazów
SH
  • Rejestracja:około 14 lat
  • Ostatnio:około 14 lat
  • Postów:3
0

Potrzebuję pomocy ze scaleniem dwóch obrazów. Próbuję się doczytać na php.net jakiejś pomocnej informacji na temat GD, ale nic co do tej pory zrobiłem nie tworzy mi nowego obrazu zawierającego scalone pliki.
Sprawa wygląda tak, że muszę w przechowywać jeden scalony obraz z dwóch wcześniej wskazanych przez użytkownika.
Czyli mamy zdjęcie A i zdjęcie B, a wynikiem ma być zdjęcie C zawierające zdjęcie A połączone prawą krawędzią z lewa krawędzią zdjęcia B. Oczywiście jeszcze trzeba to odpowiednio przeskalować, żeby rozmiar był taki sam, ale to nie jest problem.

Proszę o naprowadzenie. Jakiś tutorial lub przynajmniej jaką funkcją to zrobić


.oO|Oo.
edytowany 2x, ostatnio: Shamrock
0

Witam,
Borykam sie z identycznym problemem. Ja to zrobiłem tak, ale nie wiem jak dopisać do tego upload (dodaje się jednocześnie dwa obrazy i skrypt je łączy w jeden) i jak rozwiązac problem z dublowaniem nazw tzn. co jesli kilka osób na raz będzie chciało dodać zdjęcia. Myślę o nadawaniu nazw plikom tymczasowym i finalnym używając MD5 ale nie wiem czy dobrze kombinuje.
Jestem otwarty na wszelkie sugestie i propozycje. Oczywiście jak jest sposób żeby to uprościć to chętnię się jego nauczę :)

Kopiuj
<?
$img = imagecreatefromjpeg("./foto_tmp/01.jpg");  // zdjecie 1
$img2 = imagecreatefromjpeg("./foto_tmp/02.jpg");  // zdjęcie 2

$w_img  = imagesx($img);  // szerokość zdj 1
$h_img = imagesy($img);  //  wysokośc zdj 1

$w_img2  = imagesx($img2); // szerkość zdj 2
$h_img2 = imagesy($img2);  // wysokość zdj 2


$h_mini = 320;  // stąła wysokość 320px po zmniejszeniu
$w_img_mini = ($w_img * 100)/(100*$h_img /$h_mini); // szerokość zdj 1 wyliczamy proporcjonalnie do stałej wysokość
$w_img2_mini = ($w_img2 * 100)/(100*$h_img2 /$h_mini); // szerokość zdj2 wyliczamy proporcjonalnie do stałej wysokość

$img_mini = imagecreatetruecolor($w_img_mini+$w_img2_mini, $h_mini); // tworzę obraz zawierający zjęcie 1 + obszar na zdjęcie 2
$img2_mini = imagecreatetruecolor($w_img2_mini, $h_mini); 

imagecopyresampled($img_mini, $img, 0, 0, 0, 0, $w_img_mini, $h_mini, $w_img, $h_img); // generacja dopasowanych obrazów
imagecopyresampled($img2_mini, $img2, 0, 0, 0, 0, $w_img2_mini, $h_mini, $w_img2, $h_img2);

imagejpeg($img_mini, "./foto_tmp/tmp1.jpg", 80); // zapis dopasowanych obrazów
imagejpeg($img2_mini, "./foto_tmp/tmp2.jpg", 80);

imagedestroy($img);
imagedestroy($img2);
imagedestroy($img_mini);
imagedestroy($img2_mini);

$tmp1 = imagecreatefromjpeg('./foto_tmp/tmp1.jpg');
$tmp2 = imagecreatefromjpeg('./foto_tmp/tmp2.jpg');

imagecopymerge($tmp1, $tmp2, $w_img_mini, 0, 0, 0, $w_img2_mini, $h_mini , 100); // scalanie obrazów

imagejpeg($tmp1,"./foto/final.jpg",80);

imagedestroy($tmp1);
imagedestroy($tmp2);

echo '<img src="./foto/final.jpg">';
?>
 
 

Pozdrawiam

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.