spdwrench Posted August 7, 2007 Share Posted August 7, 2007 I am using a function I just downloaded to resize and brand some text to an image... I was so happy I finally got this working... but after repeated tries it started failing.... would not return the resized image.... I dont think it is setup to show me an error as to why..... anyway it was resizing any image greater than 800 x 600 and then putting my site title on the top of the image in white text... this all works so well but only works intermitantly.... I actually had the same picture work one time but not the next... Am I running out of memory somewhere? is there an image not being destroyed somewhere? causing a memory issue? my php memory is set to 32M (is that enough? I would think so) here is the page that calls the function <?php //resize if too big + watermark // call to function $file_source is the location of the upload file $size is the original size of uploaded file... include("engine/ImageEditor.php"); if ($size[0] > $max_image_width||$size[1]>$max_image_height) { $imageEditor = new ImageEditor($file_source, "photos/"); if ($size[0]>$size[1]){$imageEditor->resize(800,600); $dtw=30;} else {$imageEditor->resize(450,600); $dtw=17;} $imageEditor->outputFile($file_source, "photos/"); } // text follows if($dtw==0){$dtw=($size[0]/25);} $imageEditor = new ImageEditor($file_source, "photos/"); $imageEditor->setFont("engine/pages/georgia.ttf"); $imageEditor->setSize($dtw); // Following line is text going on picture starting position 50 x 10 y color white 255 255 255 $imageEditor->addText("ABMATCH.COM FREE DATING",10 , 50,array (255,255,255)); $imageEditor->outputFile($file_source, "photos/"); $dtw=0; // End resize image and watermark ?> the function being called by this bit of code is below: <?php class ImageEditor { var $x; var $y; var $type; var $img; var $font; var $error; var $size; ######################################################## # CONSTRUCTOR ######################################################## function ImageEditor($filename, $path, $col=NULL) { $this->font = false; $this->error = false; $this->size = 25; if(is_numeric($filename) && is_numeric($path)) ## IF NO IMAGE SPECIFIED CREATE BLANK IMAGE { $this->x = $filename; $this->y = $path; $this->type = "jpg"; $this->img = imagecreatetruecolor($this->x, $this->y); if(is_array($col)) ## SET BACKGROUND COLOUR OF IMAGE { $colour = ImageColorAllocate($this->img, $col[0], $col[1], $col[2]); ImageFill($this->img, 0, 0, $colour); } } else ## IMAGE SPECIFIED SO LOAD THIS IMAGE { ## FIRST SEE IF WE CAN FIND IMAGE if(file_exists($path . $filename)) { $file = $path . $filename; } else if (file_exists($path . "/" . $filename)) { $file = $path . "/" . $filename; } else { $this->errorImage("File Could Not Be Loaded"); } if(!($this->error)) { ## LOAD OUR IMAGE WITH CORRECT FUNCTION $this->type = strtolower(end(explode('.', $filename))); if ($this->type == 'jpg' || $this->type == 'jpeg') { $this->img = @imagecreatefromjpeg($file); } else if ($this->type == 'png') { $this->img = @imagecreatefrompng($file); } else if ($this->type == 'gif') { $this->img = @imagecreatefrompng($file); } ## SET OUR IMAGE VARIABLES $this->x = imagesx($this->img); $this->y = imagesy($this->img); } } } ######################################################## # RESIZE IMAGE GIVEN X AND Y ######################################################## function resize($width, $height) { if(!$this->error) { $tmpimage = imagecreatetruecolor($width, $height); imagecopyresampled($tmpimage, $this->img, 0, 0, 0, 0, $width, $height, $this->x, $this->y); imagedestroy($this->img); $this->img = $tmpimage; $this->y = $height; $this->x = $width; } } ######################################################## # CROPS THE IMAGE, GIVE A START CO-ORDINATE AND # LENGTH AND HEIGHT ATTRIBUTES ######################################################## function crop($x, $y, $width, $height) { if(!$this->error) { $tmpimage = imagecreatetruecolor($width, $height); imagecopyresampled($tmpimage, $this->img, 0, 0, $x, $y, $width, $height, $width, $height); imagedestroy($this->img); $this->img = $tmpimage; $this->y = $height; $this->x = $width; } } ######################################################## # ADDS TEXT TO AN IMAGE, TAKES THE STRING, A STARTING # POINT, PLUS A COLOR DEFINITION AS AN ARRAY IN RGB MODE ######################################################## function addText($str, $x, $y, $col) { if(!$this->error) { if($this->font) { $colour = ImageColorAllocate($this->img, $col[0], $col[1], $col[2]); if(!imagettftext($this->img, $this->size, 0, $x, $y, $colour, $this->font, $str)) { $this->font = false; $this->errorImage("Error Drawing Text"); } } else { $colour = ImageColorAllocate($this->img, $col[0], $col[1], $col[2]); Imagestring($this->img, 5, $x, $y, $str, $colour); } } } function shadowText($str, $x, $y, $col1, $col2, $offset=2) { $this->addText($str, $x, $y, $col1); $this->addText($str, $x-$offset, $y-$offset, $col2); } ######################################################## # ADDS A LINE TO AN IMAGE, TAKES A STARTING AND AN END # POINT, PLUS A COLOR DEFINITION AS AN ARRAY IN RGB MODE ######################################################## function addLine($x1, $y1, $x2, $y2, $col) { if(!$this->error) { $colour = ImageColorAllocate($this->img, $col[0], $col[1], $col[2]); ImageLine($this->img, $x1, $y1, $x2, $y2, $colour); } } ######################################################## # RETURN OUR EDITED FILE AS AN IMAGE ######################################################## function outputImage() { if ($this->type == 'jpg' || $this->type == 'jpeg') { header("Content-type: image/jpeg"); imagejpeg($this->img); } else if ($this->type == 'png') { header("Content-type: image/png"); imagepng($this->img); } else if ($this->type == 'gif') { header("Content-type: image/png"); imagegif($this->img); } } ######################################################## # CREATE OUR EDITED FILE ON THE SERVER ######################################################## function outputFile($filename, $path) { if ($this->type == 'jpg' || $this->type == 'jpeg') { imagejpeg($this->img, ($path . $filename)); } else if ($this->type == 'png') { imagepng($this->img, ($path . $filename)); } else if ($this->type == 'gif') { imagegif($this->img, ($path . $filename)); } } ######################################################## # SET OUTPUT TYPE IN ORDER TO SAVE IN DIFFERENT # TYPE THAN WE LOADED ######################################################## function setImageType($type) { $this->type = $type; } ######################################################## # ADDS TEXT TO AN IMAGE, TAKES THE STRING, A STARTING # POINT, PLUS A COLOR DEFINITION AS AN ARRAY IN RGB MODE ######################################################## function setFont($font) { $this->font = $font; } ######################################################## # SETS THE FONT SIZE ######################################################## function setSize($size) { $this->size = $size; } ######################################################## # GET VARIABLE FUNCTIONS ######################################################## function getWidth() {return $this->x;} function getHeight() {return $this->y;} function getImageType() {return $this->type;} ######################################################## # CREATES AN ERROR IMAGE SO A PROPER OBJECT IS RETURNED ######################################################## function errorImage($str) { $this->error = false; $this->x = 235; $this->y = 50; $this->type = "jpg"; $this->img = imagecreatetruecolor($this->x, $this->y); $this->addText("AN ERROR OCCURED:", 10, 5, array(250,70,0)); $this->addText($str, 10, 30, array(255,255,255)); $this->error = true; } } ?> it worked a couple times then started acting up and not producing a resized image.... My smile came right off my face any ideas? Paul Link to comment https://forums.phpfreaks.com/topic/63765-solved-picture-resize-function-only-works-at-times-memory-issue-i-dunno/ Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.