Jump to content

Image Upload Problem (Previous Post Disappeared..)


happypete

Recommended Posts

took out all the '@'s on the resize class and get a new error:

 

Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 10944 bytes) in /home/user/public_html/accounts/inc/resize-class.php on line 45

 

Array
(
[submit] => Upload
)
Array
(
[image] => Array
 (
	 [name] => yey.jpg
	 [type] => image/jpeg
	 [tmp_name] => /tmp/phpVUsEsR
	 [error] => 0
	 [size] => 1576292
 )
)

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/user/public_html/accounts/index-imageupdate.php:3) in /home/user/public_html/accounts/assets/member.class.php on line 17
Notice: Undefined index: cancel in /home/user/public_html/accounts/index-imageupdate.php on line 15
Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 10944 bytes) in /home/user/public_html/accounts/inc/resize-class.php on line 45

 

do i need to increase the limit on the resize_class.php, if so, any suggestions on how?

 

line 45: $img = imagecreatefromjpeg($file);

 

<?php
ini_set('display_errors',1);
error_reporting(E_ALL);

# ========================================================================#
#
# Author: Jarrod Oberto
# Version: 1.0
# Date:	 17-Jan-10
# Purpose: Resizes and saves image
# Requires : Requires PHP5, GD library.
# Usage Example:
#					 include("file:///C|/xampplite/htdocs/inc/classes/resize_class.php");
#					 $resizeObj = new resize('images/cars/large/input.jpg');
#					 $resizeObj -> resizeImage(150, 100, 0);
#					 $resizeObj -> saveImage('images/cars/large/output.jpg', 100);
#
#
# ========================================================================#
Class resize
{
// *** Class variables
private $image;
 private $width;
 private $height;
private $imageResized;
function __construct($fileName)
{
// *** Open up the file
$this->image = $this->openImage($fileName);
 // *** Get width and height
 $this->width = imagesx($this->image);
 $this->height = imagesy($this->image);
}
## --------------------------------------------------------
private function openImage($file)
{
// *** Get extension
$extension = strtolower(strrchr($file, '.'));
switch($extension)
{
 case '.jpg':
 case '.jpeg':
 $img = imagecreatefromjpeg($file); // @ REMOVED
 break;
 case '.gif':
 $img = imagecreatefromgif($file); // @ REMOVED
 break;
 case '.png':
 $img = imagecreatefrompng($file); // @ REMOVED
 break;
 default:
 $img = false;
 break;
}
return $img;
}
## --------------------------------------------------------
public function resizeImage($newWidth, $newHeight, $option="auto")
{
// *** Get optimal width and height - based on $option
$optionArray = $this->getDimensions($newWidth, $newHeight, $option);
$optimalWidth = $optionArray['optimalWidth'];
$optimalHeight = $optionArray['optimalHeight'];
// *** Resample - create image canvas of x, y size
$this->imageResized = imagecreatetruecolor($optimalWidth, $optimalHeight);
imagecopyresampled($this->imageResized, $this->image, 0, 0, 0, 0, $optimalWidth, $optimalHeight, $this->width, $this->height);
// *** if option is 'crop', then crop too
if ($option == 'crop') {
 $this->crop($optimalWidth, $optimalHeight, $newWidth, $newHeight);
}
}
## --------------------------------------------------------

private function getDimensions($newWidth, $newHeight, $option)
{
 switch ($option)
{
 case 'exact':
 $optimalWidth = $newWidth;
 $optimalHeight= $newHeight;
 break;
 case 'portrait':
 $optimalWidth = $this->getSizeByFixedHeight($newHeight);
 $optimalHeight= $newHeight;
 break;
 case 'landscape':
 $optimalWidth = $newWidth;
 $optimalHeight= $this->getSizeByFixedWidth($newWidth);
 break;
 case 'auto':
 $optionArray = $this->getSizeByAuto($newWidth, $newHeight);
 $optimalWidth = $optionArray['optimalWidth'];
 $optimalHeight = $optionArray['optimalHeight'];
 break;
 case 'crop':
 $optionArray = $this->getOptimalCrop($newWidth, $newHeight);
 $optimalWidth = $optionArray['optimalWidth'];
 $optimalHeight = $optionArray['optimalHeight'];
 break;
}
return array('optimalWidth' => $optimalWidth, 'optimalHeight' => $optimalHeight);
}
## --------------------------------------------------------
private function getSizeByFixedHeight($newHeight)
{
$ratio = $this->width / $this->height;
$newWidth = $newHeight * $ratio;
return $newWidth;
}
private function getSizeByFixedWidth($newWidth)
{
$ratio = $this->height / $this->width;
$newHeight = $newWidth * $ratio;
return $newHeight;
}
private function getSizeByAuto($newWidth, $newHeight)
{
if ($this->height < $this->width)
// *** Image to be resized is wider (landscape)
{
 $optimalWidth = $newWidth;
 $optimalHeight= $this->getSizeByFixedWidth($newWidth);
}
elseif ($this->height > $this->width)
// *** Image to be resized is taller (portrait)
{
 $optimalWidth = $this->getSizeByFixedHeight($newHeight);
 $optimalHeight= $newHeight;
}
else
// *** Image to be resizerd is a square
{
 if ($newHeight < $newWidth) {
 $optimalWidth = $newWidth;
 $optimalHeight= $this->getSizeByFixedWidth($newWidth);
 } else if ($newHeight > $newWidth) {
 $optimalWidth = $this->getSizeByFixedHeight($newHeight);
 $optimalHeight= $newHeight;
 } else {
 // *** Sqaure being resized to a square
 $optimalWidth = $newWidth;
 $optimalHeight= $newHeight;
 }
}
return array('optimalWidth' => $optimalWidth, 'optimalHeight' => $optimalHeight);
}
## --------------------------------------------------------
private function getOptimalCrop($newWidth, $newHeight)
{
$heightRatio = $this->height / $newHeight;
$widthRatio = $this->width / $newWidth;
if ($heightRatio < $widthRatio) {
 $optimalRatio = $heightRatio;
} else {
 $optimalRatio = $widthRatio;
}
$optimalHeight = $this->height / $optimalRatio;
$optimalWidth = $this->width / $optimalRatio;
return array('optimalWidth' => $optimalWidth, 'optimalHeight' => $optimalHeight);
}
## --------------------------------------------------------
private function crop($optimalWidth, $optimalHeight, $newWidth, $newHeight)
{
// *** Find center - this will be used for the crop
$cropStartX = ( $optimalWidth / 2) - ( $newWidth /2 );
$cropStartY = ( $optimalHeight/ 2) - ( $newHeight/2 );
$crop = $this->imageResized;
//imagedestroy($this->imageResized);
// *** Now crop from center to exact requested size
$this->imageResized = imagecreatetruecolor($newWidth , $newHeight);
imagecopyresampled($this->imageResized, $crop , 0, 0, $cropStartX, $cropStartY, $newWidth, $newHeight , $newWidth, $newHeight);
}
## --------------------------------------------------------
public function saveImage($savePath, $imageQuality="100")
{
// *** Get extension
	 $extension = strrchr($savePath, '.');
	 $extension = strtolower($extension);
switch($extension)
{
 case '.jpg':
 case '.jpeg':
 if (imagetypes() & IMG_JPG) {
 imagejpeg($this->imageResized, $savePath, $imageQuality);
 }
 break;
 case '.gif':
 if (imagetypes() & IMG_GIF) {
 imagegif($this->imageResized, $savePath);
 }
 break;
 case '.png':
 // *** Scale quality from 0-100 to 0-9
 $scaleQuality = round(($imageQuality/100) * 9);
 // *** Invert quality setting as 0 is best, not 9
 $invertScaleQuality = 9 - $scaleQuality;
 if (imagetypes() & IMG_PNG) {
 imagepng($this->imageResized, $savePath, $invertScaleQuality);
 }
 break;
 // ... etc
 default:
 // *** No extension - No save.
 break;
}
imagedestroy($this->imageResized);
}
## --------------------------------------------------------
}
?>

Edited by happypete
Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.