I am uploading an image that is included in the $_FILES object. However, when I attempt to get its size, I get the error that it is not a string or alternatively not a resource... How can I get the size of this image and, in turn, modify it in GD. Do I have to convert it to a string? Or what do these methods want as their input.
$image = $_FILES['uploaded_file'];
var_dump($image);
$oldw = imagesx($image);
$oldh = imagesy($image);
$imagedetails = getimagesize($image);
$width = "width".$imagedetails[0];
$height = "height".$imagedetails[1];
$neww = 512;
$newh = 512;
$temp = imagecreatetruecolor($neww, $newh);
imagecopyresampled($temp, $image, 0, 0, 0, 0, $neww, $newh, $oldw, $oldh);
//Error messages:
imagesx() expects parameter 1 to be resource
imagesy() expects parameter 1 to be resource
getimagesize() expects parameter 1 to be string
//Here is what the var_dump of image
array(5) {
["name"]=>
string(14) "image.png"
["type"]=>
string(24) "application/octet-stream"
["tmp_name"]=>
string(14) "/tmp/phpLlon22"
["error"]=>
int(0)
["size"]=>
int(2743914)
Thanks in advance for any suggestions.
Both imagesx
and imagesy
require an opened image, i.e. already loaded into memory.
getimagesize
requires a filename but $image
is an array. You have to pass $_FILES['uploaded_file']['tmp_name']
to it.
Also, you have to create an image resource from the uploaded image before you can resample it.
$imagefile = $_FILES['uploaded_file']['tmp_name'];
var_dump($image);
$imagedetails = getimagesize($imagefile);
$oldw = $imagedetails[0];
$oldh = $imagedetails[1];
$width = "width".$imagedetails[0];
$height = "height".$imagedetails[1];
$neww = 512;
$newh = 512;
$image = imagecreatefromstring(file_get_contents($imagefile));
$temp = imagecreatetruecolor($neww, $newh);
imagecopyresampled($temp, $image, 0, 0, 0, 0, $neww, $newh, $oldw, $oldh);