Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    GD: imagecopymerge() problema alfa

    ciao a tutti,
    sto cercando di scrivermi una classe per gestire le immagini e ho un problema con una funzione, quella per creare l'effetto filigrana. Ve la riporto:
    Codice PHP:
    public function watermark($logo_path,$opacity=100,$x=0,$y=0){
        if(!
    is_numeric($opacity)||!is_numeric($x)||!is_numeric($y))
            return 
    "001";
        if(!
    file_exists($logo_path))
            return 
    "005";
        if(!
    $this->isPng($logo_path))
            return 
    "006";
        if(
    $watermarked=imagecreatetruecolor($this->original_width,$this->original_height)){
            
    imagecopymerge($watermarked,$wmk,$x,$y,0,0,$w_w,$w_h,$opacity);
            
    $org=imagecreatefromjpeg($this->path);
            
    $wmk=imagecreatefrompng($logo_path);
            list(
    $w_w,$w_h)=getimagesize($logo_path);
            
    imagecopy($watermarked,$org,0,0,0,0,$this->original_width,$this->original_height);
            
    imagealphablending($watermarked,true);
            return 
    $watermarked;
        }else{
            return 
    "002";
        }

    il problema non ve lo sto neanche a spiegare, vi linko le immagini sorgente e il risultato il che dovrebbe ampiamente bastare per capire che così proprio non va!

    Immagine di partenza
    PNG trasparente da sovrapporre
    Risultato finale :S

    qualcuno sarebbe così gentile da aiutarmi a trovare una soluzione al problema?

    grazie in anticipo!!

  2. #2

  3. #3
    Utente di HTML.it L'avatar di Razorblade
    Registrato dal
    Feb 2002
    Messaggi
    1,308
    Ciao,
    che valore attribuisci ad opacity richiamando quel metodo?

  4. #4
    ciao, grazie dell'attenzione
    se ti riferisci alla variabile $opacity di standard e nell'esempio in questione è 100 (%) ma quello me lo considera bene, ho fatto delle prove con 75 e funzionava il punto è che non mi legge il canale alpha della png

  5. #5
    ho visto su internet uno script che ricrea pixel per pixel l'immagine fondendo i pixel delle due immagini ma credo che non funzioni nemmeno quello perchè se non viene letto il canale alfa della png è dura che venga un risultato decente

    so che questo genere di script viene usato molto su internet quindi non dev'essere qualcosa di particolarmente complesso...

    non è invece che il problema sta in imagecopymerge()? magari esiste una funzione più adatta allo scopo.

  6. #6
    Utente di HTML.it L'avatar di Razorblade
    Registrato dal
    Feb 2002
    Messaggi
    1,308
    Hai provato a prendere la png da sovrapporre e magari provare a risalvarla in un altro formato png o magari gif?

    Ho realizzato una classe per il watermarking per il mio sito ( quello in firma ) e la cosa funziona alla perfezione.

    Ciao

  7. #7
    e il codice è compatibile col mio?
    io l'ho salvata con photoshop (save for web) come png 24 comunque

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.