how to create thumbnail + shadow by this script
Posted: Thu Dec 03, 2009 4:04 pm
hello, I have this script, when adding shadow in my pictures:
this script works correctly, but I'd like to reduce(thumbnail) of the picture additionally and save reduce on the disc instead of them display. How can I do this?
Code: Select all
<?php
/* set drop shadow options */
/* offset of drop shadow from top left */
define ( "DS_OFFSET" , 5 );
/* number of steps from black to background color /*
define("DS_STEPS", 10);
/* distance between steps */
define ( "DS_SPREAD" , 1 );
/* define the background color */
$background = array( "r" => 255 , "g" => 255 , "b" => 255 );
$src = isset( $_REQUEST [ 'src' ]) ? urldecode ( $_REQUEST [ 'src' ]) : null ;
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 */
header ( "Content-type: image/jpeg" );
imagejpeg ( $image , "" , 100 );
/* clean up the image resources */
imagedestroy ( $image );
imagedestroy ( $original_image );
}
?>