PHP programming forum. Ask questions or help people concerning PHP code. Don't understand a function? Need help implementing a class? Don't understand a class? Here is where to ask. Remember to do your homework!
Which converted a gif to jpeg then displayed it, but i want to do the same thing but just keep the file in a "file" (really in a string $output) so that I can send it into a script I have on a included file....which I only have going jpegs... Any help would be GREATLY appreciated
I know that "The filename argument is optional, and if left off, the raw image stream will be output directly." I just cant find out anything to make what I want happen...
tecktalkcm0391 wrote:I know that "The filename argument is optional, and if left off, the raw image stream will be output directly." I just cant find out anything to make what I want happen...
Ha ha... got it now... how come everytime i post on here lately i found out the problem myself (with of course some help from others)... i feel stupid
<?php
ob_start();
function resize_png_image($img,$newWidth,$newHeight,$target){
$srcImage=imagecreatefrompng($img);
if($srcImage==''){
return FALSE;
}
$srcWidth=imagesx($srcImage);
$srcHeight=imagesy($srcImage);
$percentage=(double)$newWidth/$srcWidth;
$destHeight=round($srcHeight*$percentage)+1;
$destWidth=round($srcWidth*$percentage)+1;
if($destHeight > $newHeight){
// if the width produces a height bigger than we want, calculate based on height
$percentage=(double)$newHeight/$srcHeight;
$destHeight=round($srcHeight*$percentage)+1;
$destWidth=round($srcWidth*$percentage)+1;
}
$destImage=imagecreatetruecolor($destWidth-1,$destHeight-1);
if(!imagealphablending($destImage,FALSE)){
return FALSE;
}
if(!imagesavealpha($destImage,TRUE)){
return FALSE;
}
if(!imagecopyresampled($destImage,$srcImage,0,0,0,0,$destWidth,$destHeight,$srcWidth,$srcHeight)){
return FALSE;
}
if(!imagepng($destImage,$target)){
return FALSE;
}
imagedestroy($destImage);
imagedestroy($srcImage);
return TRUE;
}
$edgePadding=15; // used when placing the watermark near an edge
$quality=100; // used when generating the final image
$default_watermark='sold.png'; // the default image to use if no watermark was chosen
// be sure that the other options we need have some kind of value
$save_as='jpeg';
$v_position='center';
$h_position='center';
$wm_size='larger';
// file upload success
$size=getimagesize($watermarkee);
if($size[2]==2 || $size[2]==3){
// it was a JPEG or PNG image, so we're OK so far
$original=$watermarkee;
$target_name=date('YmdHis').'_'.
// if you change this regex, be sure to change it in generated-images.php:26
preg_replace('`[^a-z0-9-_.]`i','',$watermarkee);
$target="/home/muscleca/public_images/watermark/other/".$target_name;
//$target=dirname(__FILE__).'/results/'.$target_name;
//$watermark=dirname(__FILE__).'/watermarks/'.$watermark;
$wmTarget=$watermark.'.tmp';
$origInfo = getimagesize($original);
$origWidth = $origInfo[0];
$origHeight = $origInfo[1];
$waterMarkInfo = getimagesize($watermark);
$waterMarkWidth = $waterMarkInfo[0];
$waterMarkHeight = $waterMarkInfo[1];
// watermark sizing info
if($wm_size=='larger'){
$placementX=0;
$placementY=0;
$h_position='center';
$v_position='center';
$waterMarkDestWidth=$waterMarkWidth;
$waterMarkDestHeight=$waterMarkHeight;
// both of the watermark dimensions need to be 5% more than the original image...
// adjust width first.
if($waterMarkWidth > $origWidth*1.05 && $waterMarkHeight > $origHeight*1.05){
// both are already larger than the original by at least 5%...
// we need to make the watermark *smaller* for this one.
// where is the largest difference?
$wdiff=$waterMarkDestWidth - $origWidth;
$hdiff=$waterMarkDestHeight - $origHeight;
if($wdiff > $hdiff){
// the width has the largest difference - get percentage
$sizer=($wdiff/$waterMarkDestWidth)-0.05;
}else{
$sizer=($hdiff/$waterMarkDestHeight)-0.05;
}
$waterMarkDestWidth-=$waterMarkDestWidth * $sizer;
$waterMarkDestHeight-=$waterMarkDestHeight * $sizer;
}else{
// the watermark will need to be enlarged for this one
// where is the largest difference?
$wdiff=$origWidth - $waterMarkDestWidth;
$hdiff=$origHeight - $waterMarkDestHeight;
if($wdiff > $hdiff){
// the width has the largest difference - get percentage
$sizer=($wdiff/$waterMarkDestWidth)+0.05;
}else{
$sizer=($hdiff/$waterMarkDestHeight)+0.05;
}
$waterMarkDestWidth+=$waterMarkDestWidth * $sizer;
$waterMarkDestHeight+=$waterMarkDestHeight * $sizer;
}
}else{
$waterMarkDestWidth=round($origWidth * floatval($wm_size));
$waterMarkDestHeight=round($origHeight * floatval($wm_size));
if($wm_size==1){
$waterMarkDestWidth-=2*$edgePadding;
$waterMarkDestHeight-=2*$edgePadding;
}
}
// OK, we have what size we want the watermark to be, time to scale the watermark image
resize_png_image($watermark,$waterMarkDestWidth,$waterMarkDestHeight,$wmTarget);
// get the size info for this watermark.
$wmInfo=getimagesize($wmTarget);
$waterMarkDestWidth=$wmInfo[0];
$waterMarkDestHeight=$wmInfo[1];
$differenceX = $origWidth - $waterMarkDestWidth;
$differenceY = $origHeight - $waterMarkDestHeight;
// where to place the watermark?
switch($h_position){
// find the X coord for placement
case 'left':
$placementX = $edgePadding;
break;
case 'center':
$placementX = round($differenceX / 2);
break;
case 'right':
$placementX = $origWidth - $waterMarkDestWidth - $edgePadding;
break;
}
switch($v_position){
// find the Y coord for placement
case 'top':
$placementY = $edgePadding;
break;
case 'center':
$placementY = round($differenceY / 2);
break;
case 'bottom':
$placementY = $origHeight - $waterMarkDestHeight - $edgePadding;
break;
}
if($size[2]==3)
$resultImage = imagecreatefrompng($original);
else
$resultImage = imagecreatefromjpeg($original);
imagealphablending($resultImage, TRUE);
$finalWaterMarkImage = imagecreatefrompng($wmTarget);
$finalWaterMarkWidth = imagesx($finalWaterMarkImage);
$finalWaterMarkHeight = imagesy($finalWaterMarkImage);
imagecopy($resultImage,
$finalWaterMarkImage,
$placementX,
$placementY,
0,
0,
$finalWaterMarkWidth,
$finalWaterMarkHeight
);
if($size[2]==3){
imagealphablending($resultImage,FALSE);
imagesavealpha($resultImage,TRUE);
// SAVE THE IMAGE....
//imagepng($resultImage,$target,$quality);
// JUST DISPLAY THE IMAGE!!!!
header('content-type: image/png');
imagepng($resultImage);
}else{
// SAVE THE IMAGE....
// imagejpeg($resultImage,$target,$quality);
// JUST DISPLAY THE IMAGE!!!!
header('content-type: image/jpeg');
imagejpeg($resultImage);
}
imagedestroy($resultImage);
imagedestroy($finalWaterMarkImage);
unlink($wmTarget);
}
?>