Newsgroup: it.comp.www.php
Titolo: Effetto Ombra Al Volo senza Modifiche

Salve ragazzi,
Ho un problema con uno script che sto Utilizzando da un po di giorni.
Lo script permette, partendo da un immagine sul server,
di creare un Ombra (Effetto DROP SHADOW) sotto di lei e di Salvarla in 
un nuovo File.
Il Mio Problema Principale è Questo:
Vorrei Sempre partire dal file immagine sul server, ma applicare 
l'effetto "AL VOLO", stampandolo poi a video; Il tutto senza ne 
modifiche al file originale o creazione di un nuovo file persistente sul 
server.
Non ho però la più pallida idea di come questo possa avvenire e 
apprezzerei Qualsiasi suggerimento e/o aiuto.
Vi lascio Il Codice, ma meglio agevolarvi il lavoro nel caso vogliate 
aiutarmi e per facilitare qualcun' altro nel caso necessiti di questo 
tipo di effetto:
<?php
/* OPZIONI DROP SHADOW [Ombra Sotto Immagine] */
/* offset of drop shadow from top left */
define("DS_OFFSET",  6);
/* number of steps from black to background color */
define("DS_STEPS", 35);
/* distance between steps */
define("DS_SPREAD", 1);
/* define the background color */
$background = array("r" => 255, "g" => 255, "b" => 255);
$suffx = "ombra";
$src = "immagine.jpg";
if(isset($src) && file_exists($src))
{
	/* create a new canvas.  New canvas dimensions should be larger than 
the original's */
	list($o_width, $o_height) = getimagesize($src);
   	$width  = $o_width + DS_OFFSET;
   	$height = $o_height + DS_OFFSET;
   	$image = imagecreatetruecolor($width, $height);
	/* determine the offset between colors */
   	$step_offset = array("r" => ($background["r"] / DS_STEPS), "g" => 
($background["g"] / DS_STEPS), "b" => ($background["b"] / DS_STEPS));
	/* calculate and allocate the needed colors */
   	$current_color = $background;
   	for ($i = 0; $i <= DS_STEPS; $i++)
	{
     	$colors[$i] = imagecolorallocate($image, 
round($current_color["r"]), round($current_color["g"]), 
round($current_color["b"]));
		$current_color["r"] -= $step_offset["r"];
     	$current_color["g"] -= $step_offset["g"];
     	$current_color["b"] -= $step_offset["b"];
   	}
   	/* floodfill the canvas with the background color */
   	imagefilledrectangle($image, 0,0, $width, $height, $colors[0]);
   	/* draw overlapping rectangles to create a drop shadow effect */
   	for ($i = 0; $i < count($colors); $i++)
	{
     	imagefilledrectangle($image, DS_OFFSET, DS_OFFSET, $width, 
$height, $colors[$i]);
     	$width -= DS_SPREAD;
     	$height -= DS_SPREAD;
   	}
   	/* overlay the original image on top of the drop shadow */
   	$original_image = imagecreatefromjpeg($src);
   	imagecopymerge($image, $original_image, 0,0, 0,0, $o_width, 
$o_height, 100);
   	/* output the image */
   	imagejpeg($image, "$suffx$src", 100);
   	/* clean up the image resources */
   	imagedestroy($image);
   	imagedestroy($original_image);
}
?>
Grazie a Tutti e Saluti
T.


Credo che ti basti inserire un null al posto di "$suffx$src" nella parte 
finale del codice.
Codice iniziale:
   /* output the image */
   imagejpeg($image, "$suffx$src", 100);
   /* clean up the image resources */
Codice finale:
   /* output the image */
   imagejpeg($image, null, 100);
   /* clean up the image resources */
Ciao,
Riccardo
-- 
* Immolo - Ricerca annunci immobiliari
* web: 
http://www.immolo.it

 Riccardo
Che dire Riccardo,
Grazie Infinite.
Saluti

 Grazie Infinite.
Prego, č stato un piacere.
;)
Ciao


 Ciao
Scusate se vi ristresso ma è sorto un altro piccolo problema:
ho scritto il codice postato (con la correzione di Riccardo) sottoforma 
di funzione:
function ombra($src)
{
.... il codice postato....
}
ed ho provato in una pagina a richiamare la funzione e scrivendo 
praticamente:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd
">
<html xmlns="
http://www.w3.org/1999/xhtml
">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Documento senza titolo</title>
</head>
<body>
<?Php
require('drop_shadow.php');
ombra();
?>
</body>
</html>
Tenendo presente che l'immagine viene trovata correttamente, anzichè 
farmi vedere l'immagine mi stampa a video UNA PAGINONA DI CARATTERI 
INCREDIBILI
Qualcuno sa come mai?
Grazie infinite

 vedere l'immagine mi stampa a video UNA PAGINONA DI CARATTERI INCREDIBILI
Devi creare due file separati.
Uno con il codice che manda in output l'immagine (senza nessun tag HTML), e 
l'altro con il codice HTML che richiama l'immagine.
Es:
<img src="codice_che_genera_immagine.php">


 Ciao
Devi scusarmi ma non mi è affatto chiara la tua risposta.
io del codice che ho postato, con la modifica NULL di cui si è parlato,
volevo crearne una funzione da poter richiamere.
Ho quindi provveduto a correggere il codice così:
function ombra($src)
{
  ... E via via tutto il codice già riportato ...
}
il tutto salvato in un file di nome drop_shadow.php
PROBLEMI:
- Non so se e di cosa fare il return all' interno della funzione
- Non so poi, in un altra pagina all' interno dell' html, come 
richiamare la funzione col parametro necessario in modo che mi renda a 
video l'immagine voluta con l'ombra.
Grazie in ogni caso per il continuo aiuto
Saluti
T.

 video l'immagine voluta con l'ombra.
dovresti fare una pagina PHP che simula di essere un'immagine:
<img src="ombra.php?img=aaaa." title="" alt="" />
nella pagina  "ombra.php" fai:
1. setti gli header correttamente per il tipo immagine
2. esamini il file da passare
3. fai l'include delle funzioni
4. metti in output il risultato della funzione...
scusa la fretta... :-)
-thePanz-