php - 内存之外的图像干预 - laravel

标签 php laravel image-processing memory-leaks seeding

内存问题:干预图像处理

我正在为 laravel 使用干预图像类,并将图像复制、调整大小和编码到站点目录。本质上是模拟上传到虚假列表。

但是,我似乎在运行数据库种子时遇到了内存问题。

错误信息:

local.ERROR: exception 'Symfony\Component\Debug\Exception\FatalErrorException' 
with message 'Allowed memory size of 134217728 bytes exhausted (tried to allocate 5056 bytes)' 
in C:\xampp\htdocs\equezone\vendor\intervention\image\src\Intervention\Image\Gd\Decoder.php:115

每张图片不超过 1265x625。图像仅在大于 1300x700 时才调整大小。因此,实际上没有调整图像的大小...

Gd\Decoder.php第115行

$canvas = imagecreatetruecolor($width, $height);

imagecreatetruecolor 似乎扩展了 php 的 gd 类。

这是我的代码的基础:

$image = Image::make(( ! is_string($file))? $file->getRealPath(): $file);
if ($image->width() > self::MAX_IMAGE_WIDTH || $image->height() > self::MAX_IMAGE_HEIGHT) {
    self::resizeImage($image, self::MAX_IMAGE_WIDTH, self::MAX_IMAGE_HEIGHT);
}

/*
Some code here to retrieve the listing from the database, 
create an image in the database
assign image to the listing
*/

$image->encode('jpg',100);
$image->save($img->getImageLocation(), 100);

我找出内存泄漏的来源。

在内存崩溃之前,种子将播种大约 8 - 14 个列表。上传大约 60 - 70 张图片。然后内存不足。列表是随机生成的,图像是随机分配给列表的……

这完全让我难住了。如果您想了解有关该信息的更多详细信息,请告诉我。

最佳答案

尝试使用 destroy 来释放为实例分配的内存:

$image->encode('jpg',100);
$image->save($img->getImageLocation(), 100);
$image->destroy();

http://image.intervention.io/api/destroy

关于php - 内存之外的图像干预 - laravel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28433164/

相关文章:

php - Elasticsearch 或 Solr + Mysql 表搜索

php - 调用未定义的方法 Illuminate\Routing\Route::getUri()

php - 如何在 Laravel 中使用 Ajax 调用将数据发布到数据库?

php - Laravel Sail - 使用 Xdebug 调试 API

node.js - 图像处理/计算机视觉 - body 部位识别 - 姿势(站立/坐) - 监督学习

algorithm - "vibrance"过滤器的算法是什么?

php - 将 PHP 日期范围转换为 MYSQL 单个日期

PHP mail() 变成垃圾邮件,可能是 DNS 问题?

PHP file_exists 不起作用

ios - 如何以顺时针方向遍历像素而不是快速快速扫描通常的行列?