Ultima modifica da un moderatore:
Ciao a tutti!
sono incappato oramai da settimane in questa porzione di codice:
Questo codice mi permette di trasformare un'immagine quadrata in forma rotonda, attraverso dei vari procedimenti trasformerà gli angoli rimossi in trasparenza.
Successivamente provvederà a copiare la suddetta immagine in un'altra più grande.
Ebbene la trasparenza funziona per il lato destro ed il lato inferiore, non per gli altri.
Mi spiego meglio: se l'immagine che andiamo a sovrapporre sarà posizionata in alto a sinistra (coordinate: 0, 0) sarà perfetta.
Mentre se la si sposta anche soltanto di un pixel più al centro, i lati superiore e sinistro non vengono bene.
Il codice l'ho preso spunto da un altro sito e sinceramente non so bene come funziona l'algoritmo.
So che crea delle maschere, con dei colori, dopodiché va a eliminare questi colori negli angoli.
Io credo che la maschera debba essere spostata degli stessi pixel della foto.
Qualcuno può aiutarmi ?
PS: il codice è molto disordinato con variabili inutili, non fateci caso.
sono incappato oramai da settimane in questa porzione di codice:
PHP:
<?php
$myImageZoom = imagecreatefromjpeg('sample.jpg');
$img = imagecreatefromjpeg('back.jpg');
$src_img = $myImageZoom;
$src_w = imagesx($myImageZoom);
$src_h = imagesy($myImageZoom);
$dst_w = $src_w;
$dst_h = $src_h;
$dst_img = imagecreatetruecolor($dst_w, $dst_h);
imagecopy($dst_img, $src_img, 0, 0, 0, 0, $dst_w, $dst_h);
$mask = $img;
$maskTransparent = imagecolorallocate($mask, 255, 0, 255);
imagecolortransparent($mask, $maskTransparent);
imagefilledellipse($mask, $dst_w / 2, $dst_h / 2, $dst_w, $dst_h, $maskTransparent);
imagecopymerge($dst_img, $mask, 0, 0, 0, 0, $dst_w, $dst_h, 100);
$dstTransparent = imagecolorallocate($dst_img, 255, 0, 255);
imagefill($dst_img, 0, 0, $dstTransparent);
imagefill($dst_img, $dst_w - 1, 0, $dstTransparent);
imagefill($dst_img, 0, $dst_h - 1, $dstTransparent);
imagefill($dst_img, $dst_w - 1, $dst_h - 1, $dstTransparent);
imagecolortransparent($dst_img, $dstTransparent);
imagecopy($img, $dst_img, 20, 20, 0, 0, imagesx($dst_img), imagesy($dst_img));
if(!imagepng($img, "imgfinale.png")) die('Salvataggio immagine fallito');
?>
Questo codice mi permette di trasformare un'immagine quadrata in forma rotonda, attraverso dei vari procedimenti trasformerà gli angoli rimossi in trasparenza.
Successivamente provvederà a copiare la suddetta immagine in un'altra più grande.
Ebbene la trasparenza funziona per il lato destro ed il lato inferiore, non per gli altri.
Mi spiego meglio: se l'immagine che andiamo a sovrapporre sarà posizionata in alto a sinistra (coordinate: 0, 0) sarà perfetta.
Mentre se la si sposta anche soltanto di un pixel più al centro, i lati superiore e sinistro non vengono bene.
Il codice l'ho preso spunto da un altro sito e sinceramente non so bene come funziona l'algoritmo.
So che crea delle maschere, con dei colori, dopodiché va a eliminare questi colori negli angoli.
Io credo che la maschera debba essere spostata degli stessi pixel della foto.
Qualcuno può aiutarmi ?
PS: il codice è molto disordinato con variabili inutili, non fateci caso.