Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Unificare due immagini

  1. #1

    Unificare due immagini

    ciao!

    avrei la necessità di creare una immagine partendo da due immagini.
    le due immagini andranno messe una sopra l'altra.
    non si senso che devono essere sovrapposte, ma nel senso proprio "fisico".
    prima il logo, poi il barcode.

    ho fatto diverse prove, di cui questa è l'ultima:
    Codice PHP:
    $imgDest imagecreatefrompng('logo.png');
    $imgSrc imagecreatefromjpeg('img.jpeg');
    imagecopymerge($imgDest$imgSrc000300100470);
    imagepng($imgDest'img_merged.png'); 
    in quest'ultimo esempio il barcode non si vede.
    in altri invece lo sovrappone.

    non capisco se sbaglio i parametri che indico, oppure non va bene la funzione che uso!

  2. #2
    Credo tu debba prima creare un'immagine di grandezza 1 + 2 ...
    Dovrai calcolare la altezza di ognuna (x1 e x2) e la larghezza di ognuna (y1, y2), poi dovrai sommare le due altezze e trovare la larghezza maggiore (y3), quindi creare una "nuova" immagine di altezza x1 + x2 e larghezza y3, al che "pasti" le due immagini dentro la "nuova", usando imagecopy e i relativi parametri.
    Non conosco approfonditamente quelle funzioni ma a rigor di logica dovrebbe essere la soluzione più semplice

  3. #3
    Quote Originariamente inviata da Dascos Visualizza il messaggio
    Credo tu debba prima creare un'immagine di grandezza 1 + 2 ...
    Dovrai calcolare la altezza di ognuna (x1 e x2) e la larghezza di ognuna (y1, y2), poi dovrai sommare le due altezze e trovare la larghezza maggiore (y3), quindi creare una "nuova" immagine di altezza x1 + x2 e larghezza y3, al che "pasti" le due immagini dentro la "nuova", usando imagecopy e i relativi parametri.
    Non conosco approfonditamente quelle funzioni ma a rigor di logica dovrebbe essere la soluzione più semplice
    ciao!

    in effetti hai ragione te!
    grazie per la dritta!

    ho fatto una cosa del genere:
    codice:
    $path = './';
    $images = array('logo.png', 'img_1.jpg');
    $totH = 0;
    $totW = 380;
    
    foreach ($images as $image) {
        list($w, $h) = getimagesize($path . $image);
        $totH += $h;
    }
    $totH += 20;
    
    $mergedImage = imagecreatetruecolor($totW, $totH);
    imagealphablending($mergedImage, false);
    imagesavealpha($mergedImage, true);
    
    $posY = 0;
    foreach ($images as $image) {
        $info = getimagesize($path . $image);
        $mime = $info['mime'];
        $w = $info[0];
        $h = $info[1];
    
        if ($mime == 'image/png') {
            $img = imagecreatefrompng($image);
        } else {
            $img = imagecreatefromjpeg($image);
        }
    
        imagecopy($mergedImage, $img, 0, $posY, 0, 0, $w, $h);
        $posY += $h + 10;
    }
    
    imagepng($mergedImage, 'test.png');
    echo '<img src="test.png">';
    imagedestroy($mergedImage);
    sembra funzionare correttamente!
    unica cosa è che il logo è più corto dell'altra immagine.
    quindi lo devo centrare.

  4. #4
    Sì credo vada bene, anche se ho notato che esegui due volte " getimagesize($path . $image);" in due cicli diversi.
    Credo si possa fare un unico ciclo perchè tutti i dati delle immagini originali li puoi recuperare e salvare in variabili (array), che usi poi senza cicli per costruire l'immagine finale ma, ad ogni modo, centraggio a parte, direi che la strada sia quella giusta!

  5. #5
    Quote Originariamente inviata da Dascos Visualizza il messaggio
    Sì credo vada bene, anche se ho notato che esegui due volte " getimagesize($path . $image);" in due cicli diversi.
    Credo si possa fare un unico ciclo perchè tutti i dati delle immagini originali li puoi recuperare e salvare in variabili (array), che usi poi senza cicli per costruire l'immagine finale ma, ad ogni modo, centraggio a parte, direi che la strada sia quella giusta!
    si si sicuramente si può migliorare.
    poi lo sistemo!


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.