How to get image resource size in bytes with PHP and GD?

走远了吗. 提交于 2019-11-27 03:30:10

问题


I'm resizing images with php gd. The result is image resources that i want to upload to Amazon S3. It works great if i store the images on disk first but i would like to upload them directly from memory. That is possible if i just know the bytesize of the image.

Is there some way of getting the size (in bytes) of an gd image resource?


回答1:


You could use PHP's memory i/o stream to save the image to and subsequently get the size in bytes.

What you do is:

$img = imagecreatetruecolor(100,100);
// do your processing here
// now save file to memory
imagejpeg($img, 'php://memory/temp.jpeg'); 
$size = filesize('php://memory/temp.jpeg');

Now you should know the size

I don't know of any (gd)method to get the size of an image resource.




回答2:


I can't write on php://memory with imagepng, so I use ob_start(), ob_get_content() end ob_end_clean()

$image = imagecreatefrompng('./image.png'); //load image
// do your processing here
//...
//...
//...
ob_start(); //Turn on output buffering
imagejpeg($image); //Generate your image

$output = ob_get_contents(); // get the image as a string in a variable

ob_end_clean(); //Turn off output buffering and clean it
echo strlen($output); //size in bytes



回答3:


This also works:

$img = imagecreatetruecolor(100,100);

// ... processing

ob_start();              // start the buffer
imagejpeg($img);         // output image to buffer
$size = ob_get_length(); // get size of buffer (in bytes)
ob_end_clean();          // trash the buffer

And now $size will have your size in bytes.




回答4:


You might look at the following answer for help. It works for generic memory changes in php. Although since overhead could be involved it might be more of an estimation.

Getting size of PHP objects




回答5:


Save the image file in the desired format to a tmp dir, and then use filesize() http://php.net/manual/de/function.filesize.php before uploading it to S3 from disk.



来源:https://stackoverflow.com/questions/4023441/how-to-get-image-resource-size-in-bytes-with-php-and-gd

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!