Как получить размер ресурса изображения в байтах с PHP и GD?

Я изменяю размеры изображений с помощью php gd. Результатом являются ресурсы изображений, которые я хочу загрузить на Amazon S3. Он отлично работает, если я сначала храню изображения на диске, но я хотел бы загрузить их непосредственно из памяти. Это возможно, если я просто знаю размер байта изображения.

Есть ли способ получить размер (в байтах) ресурса изображения gd?

Вы можете использовать поток ввода / вывода памяти PHP для сохранения изображения и последующего получения размера в байтах.

Что вы делаете:

$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'); 

Теперь вы должны знать размер

Я не знаю ни одного метода (gd), чтобы получить размер ресурса изображения.

Я не могу писать на php: // память с помощью imagepng, поэтому я использую 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 

Это также работает:

 $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 

И теперь $size будет иметь ваш размер в байтах.

Вы можете посмотреть на следующий ответ за помощью. Он работает для общих изменений памяти в php. Хотя, поскольку накладные расходы могут быть задействованы, это может быть скорее оценка.

Получение размера объектов PHP

Сохраните файл изображения в нужном формате в dmp dmp, а затем используйте файлize () http://php.net/manual/de/function.filesize.php, прежде чем загружать его на S3 с диска.