PHP 7 PSR-7响应测试如果脚本可以在内存有限的情况下使用GD调整图像大小

问题描述 投票:0回答:1

我使用PHP 7.1和GD库。

我的脚本会在保存之前下载图像并调整其大小。服务器有256MB的内存(不能增加)。

某些图像具有较大的物理尺寸(不是文件大小),大于50Mpx。当我尝试使用GD调整大小时,内存限制错误会在此行中引发:

<?php 
$image = imagecreatefromjpeg($file);

脚本以PSR-7 HTTP响应的形式获取图像。在调整图像大小之前,我需要测试它是否有足够的内存来调整图像大小?

我试图按文件大小测试图像,但它丢弃的图像具有正常的物理尺寸,但文件大小:

<?php 
$fileIsOk = (int)$response->getBody()->getSize() <= SOME_MAGIC_SIZE_IN_BYTES;
if ($fileIsOk) {
    // do the stuff
}

例如,我的脚本失败,图像为50.2Mpx 1.51MB,但3.6Mpx为1.02MB。

我的想法是通过获取Mpx计数来测试图像:

所以我需要测试脚本是否可以在基于Mpx计数的有限内存条件下调整图像大小。如何从PSR-7响应对象中获取它?

php image-processing memory-management gd psr-7
1个回答
0
投票

您可以将响应主体转换为字符串并在其上使用getimagesizefromstring()

<?php
$imageData = (string) $response->getBody();
[$width, $height] = getimagesizefromstring($imageData);
$px = $width * $height;
© www.soinside.com 2019 - 2024. All rights reserved.