[PHP] Sovraimpressione PNG trasparente su PNG trasparente

"Null reference exception"? no, grazie, prendo un "unexpected T_VARIABLE"... Questo è il forum per imparare l'arte della programmazione o per chiedere un parere su una sessione di debug particolarmente ostica.
Regole del forum
Ricorda di indicare chiaramente nell'oggetto il linguaggio ([C#] oppure [PHP], [Java], [HTML], ...), se la discussione ne riguarda uno in particolare!
Rispondi
Avatar utente
Zane
Fondatore
Fondatore
Messaggi: 4817
Iscritto il: mer mag 01, 2013 11:20 am
Contatta:

[PHP] Sovraimpressione PNG trasparente su PNG trasparente

Messaggio da Zane »

Sto smanettando per risolvere un problema di visualizzazione nelle immagini che compaiono negli articoli. Quando il "timbro" TurboLab.it (una png trasparente) viene applicato ad un'altra png trasparente, si applica un brutto sfondo nero sullo sfondo della seconda (angolo basso-sinistra di questa immagine, ad esempio):

Immagine

Questa la parte di codice signficativa (chiaramente non prendetela "alla lettera" perchè senza tutto il contorno ovviamente non gira ;) )

Codice: Seleziona tutto

<?php
$img_tbr_res=imagecreatetruecolor($max_w, $max_h);
imageAlphaBlending($img_tbr_res, false);
imageSaveAlpha($img_tbr_res, true);

imagecopyresampled($img_tbr_res, $img_res, 0, 0, 0, 0, $max_w, $max_h, $img_w, $img_h);

$wm_original=imagecreatefrompng(Immagine::$pathWatermark);

$wm_resized = imagecreatetruecolor($wm_resized_w, $wm_resized_h);
imagecopymerge($wm_resized, $img_tbr_res, 0, 0, 10, $max_h-$wm_resized_h-10, $wm_resized_w, $wm_resized_h,100);

imagecopyresampled($wm_resized, $wm_original, 0, 0, 0, 0, $wm_resized_w, $wm_resized_h, $wm_original_w, $wm_original_h);

imagecopymerge($img_tbr_res, $wm_resized, 10, $max_h-$wm_resized_h-10, 0, 0, $wm_resized_w, $wm_resized_h, 100);
?>
Questi i riferimenti on i quali sto lavorando:
Prima o poi c'arrivo in fondo, ma se avete suggerimenti sono tutt'orecchi!
Zane - TurboLab.it

System
System
Bot ufficiale TurboLab.it
Bot
Messaggi:
Iscritto il: sab dic 31, 2016 6:19 pm
Contatta: Contatta

Re: [PHP] Sovraimpressione PNG trasparente su PNG trasparente

Messaggio da System » ven lug 12, 2013 5:50 pm


Andy94
Livello: Workstation (10/15)
Livello: Workstation (10/15)
Messaggi: 1364
Iscritto il: mer mag 01, 2013 1:35 pm
Località: Villorba (TV)

Re: [PHP] Sovraimpressione PNG trasparente su PNG trasparent

Messaggio da Andy94 »

Al momento non ho modo di guardarci approfonditamente, però con questo codice applico con successo una immagine trasparente sopra ad un'altra.

Codice: Seleziona tutto

$image_1 = imagecreatefrompng('htc.png');
$image_2 = imagecreatefrompng('tli.png');
imagealphablending($image_1, true);
imagesavealpha($image_1, true);
imagecopy($image_1, $image_2, 0, 330, 0, 0, 450, 124);
imagepng($image_1, 'result.png');

echo '<img src="result.png" alt="result" />';
HTC è un'immagine simile alla tua avente dimensioni 500x455, TLI è il logo trasparente nostro ridimensionato a 450x124. Result è l'immagine complessivamente ottenuta, che rispetta le trasparenze.

Tuttavia nel codice, come puoi notare, non vengono fatti controlli relativamente alla dimensione che il watermark deve avere sulla base della dimensione dell'immagine in cui sarà ospitato. ;)

:ciao
Se la pazienza è una virtù, attendere è un'arte...
Stiamo tornando...

Avatar utente
Zane
Fondatore
Fondatore
Messaggi: 4817
Iscritto il: mer mag 01, 2013 11:20 am
Contatta:

Re: [PHP] Sovraimpressione PNG trasparente su PNG trasparent

Messaggio da Zane »

Grazie Andy,
mi hai fatto accendere una lampadina: e se il problema stesse nel ridimensionamento iniziale? :penso Vediamo un po'...
Zane - TurboLab.it

Andy94
Livello: Workstation (10/15)
Livello: Workstation (10/15)
Messaggi: 1364
Iscritto il: mer mag 01, 2013 1:35 pm
Località: Villorba (TV)

Re: [PHP] Sovraimpressione PNG trasparente su PNG trasparent

Messaggio da Andy94 »

Se la pazienza è una virtù, attendere è un'arte...
Stiamo tornando...

Avatar utente
Boo
Livello: Floppy disk (3/15)
Livello: Floppy disk (3/15)
Messaggi: 32
Iscritto il: mar set 17, 2013 2:28 pm

Re: [PHP] Sovraimpressione PNG trasparente su PNG trasparent

Messaggio da Boo »

È inutile cercare di risolvere un bug di un prodotto che ha millemila alternative.
Prova questo script se vuoi un watermark sulle tue immagini. Tuttavia se accetti un consiglio, eviterei completamente di farlo.
I visitatori si richiamano dai motori di ricerca, e le memorie ormai costano molto poco, quindi il vizio di rubare le immagini dagli altri siti appartiene agli anni '90. Francamente trovo più utile bloccare l'hotlinking tramite Apache piuttosto che riempire le immagini con i loghi.

Avatar utente
Al3x
Amministratore
Amministratore
Messaggi: 4001
Iscritto il: mer mag 01, 2013 12:59 pm
Località: http://127.0.0.1

Re: [PHP] Sovraimpressione PNG trasparente su PNG trasparent

Messaggio da Al3x »

Boo ha scritto:il vizio di rubare le immagini dagli altri siti appartiene agli anni '90
TLI è in una fase di start-up e il watermark svolge più una funzione di diffusione del marchio piuttosto che una contromisura ai "furti" di immagini. Se qualcuno riusa il nostro materiale va bene, almeno ci fa pubblicità :)
I :amore Sasha

Avatar utente
Zane
Fondatore
Fondatore
Messaggi: 4817
Iscritto il: mer mag 01, 2013 11:20 am
Contatta:

Re: [PHP] Sovraimpressione PNG trasparente su PNG trasparent

Messaggio da Zane »

Al3x ha scritto:diffusione del marchio piuttosto che una contromisura ai "furti" di immagini.
Proprio così :sorrisone

Grazie anche a Boo per il link: me lo studio sicuramente per vedere se trovo qualche spunto.
Zane - TurboLab.it

Avatar utente
Zane
Fondatore
Fondatore
Messaggi: 4817
Iscritto il: mer mag 01, 2013 11:20 am
Contatta:

Re: [PHP] Sovraimpressione PNG trasparente su PNG trasparente

Messaggio da Zane »

Ok, sono riuscito a risolvere il problema principale e ora la situazione dovrebbe essere ok
Immagine
Anche le PNG a 8-bit si vedono ok
Immagine
Vado solo a fare un'ultima correzione per gestire un brutto bordo nero che si vede su questa PNG 8-bit trasparente poi chiudo il bug
Immagine
Zane - TurboLab.it

Avatar utente
CUB3
Moderatore
Moderatore
Messaggi: 2073
Iscritto il: lun gen 26, 2015 10:13 am

Re: Commenti a

Messaggio da CUB3 »

@Zane: mi sembra che il carimento delle immagini negli articoli sia molto più veloce rispetto a prima ma nel mio ultimo articolo ho un problema con un .png: lo sfondo trasparente non è rispettato e diventa nero. Ho provato più volte a caricare l'immagini anche dopo averla modficata ma la cosa non cambia.

Bug #533561781
"Let me tell you a secret: when you hear that the machine is “smart”, what it actually means is that it’s exploitable." Mikko Hypponen

Avatar utente
Zane
Fondatore
Fondatore
Messaggi: 4817
Iscritto il: mer mag 01, 2013 11:20 am
Contatta:

Re: [PHP] Sovraimpressione PNG trasparente su PNG trasparente

Messaggio da Zane »

Mi linki l'immagine così come si trova ora su TLI?

In ogni caso, non preoccuparti: non appena risolviamo il bug e rigeneriamo, va a posto automaticamente :approvo
Zane - TurboLab.it

Avatar utente
CUB3
Moderatore
Moderatore
Messaggi: 2073
Iscritto il: lun gen 26, 2015 10:13 am

Re: [PHP] Sovraimpressione PNG trasparente su PNG trasparente

Messaggio da CUB3 »

"Let me tell you a secret: when you hear that the machine is “smart”, what it actually means is that it’s exploitable." Mikko Hypponen

Avatar utente
Zane
Fondatore
Fondatore
Messaggi: 4817
Iscritto il: mer mag 01, 2013 11:20 am
Contatta:

Re: [PHP] Sovraimpressione PNG trasparente su PNG trasparente

Messaggio da Zane »

Bene grazie ci guarderò. Tu intanto usala pure così dove ti serve
Zane - TurboLab.it

Avatar utente
CUB3
Moderatore
Moderatore
Messaggi: 2073
Iscritto il: lun gen 26, 2015 10:13 am

Re: [PHP] Sovraimpressione PNG trasparente su PNG trasparente

Messaggio da CUB3 »

Ok!
Se può essere di aiuto, la miniatura nell'anteprima dell'articolo è corretta:
https://turbolab.it/immagini/7697/min
"Let me tell you a secret: when you hear that the machine is “smart”, what it actually means is that it’s exploitable." Mikko Hypponen

Avatar utente
CUB3
Moderatore
Moderatore
Messaggi: 2073
Iscritto il: lun gen 26, 2015 10:13 am

Re: [PHP] Sovraimpressione PNG trasparente su PNG trasparente

Messaggio da CUB3 »

Nuovo articolo trasparenze rispettate!

Ma nel vecchio ancora no. Ho anche provato a ricaricare l'immagine ma non cambia niente.
"Let me tell you a secret: when you hear that the machine is “smart”, what it actually means is that it’s exploitable." Mikko Hypponen

Avatar utente
Zane
Fondatore
Fondatore
Messaggi: 4817
Iscritto il: mer mag 01, 2013 11:20 am
Contatta:

Re: [PHP] Sovraimpressione PNG trasparente su PNG trasparente

Messaggio da Zane »

Grazie CUB3,
ti confermo che a volte la trasparenza funziona bene, altre volte no. Non ho ancora capito da cosa dipenda, purtroppo.
Zane - TurboLab.it

Avatar utente
Zane
Fondatore
Fondatore
Messaggi: 4817
Iscritto il: mer mag 01, 2013 11:20 am
Contatta:

Re: [PHP] Sovraimpressione PNG trasparente su PNG trasparente

Messaggio da Zane »

Ho scoperto che il problema si presenta quando sull'immagine non viene aggiunto il nostro logo (watermark).

Ad esempio:

Immagine

Evidentemente, il pezzo di codice che gestisce correttamente la trasparenza è all'interno di un if (watermark)...

Ripeto: non preoccupiamoci troppo del problema perché appena sistemo il codice vanno a posto anche tutte le immagini vecchie.
Zane - TurboLab.it

System
System
Bot ufficiale TurboLab.it
Bot
Messaggi:
Iscritto il: sab dic 31, 2016 6:19 pm
Contatta: Contatta

Re: Re: [PHP] Sovraimpressione PNG trasparente su PNG trasparente

Messaggio da System » dom mag 28, 2017 12:23 am


Rispondi
  • Argomenti simili
    Risposte
    Visite
    Ultimo messaggio