【问题标题】:OctoberCMS: Cropping the original image on uploadOctoberCMS:在上传时裁剪原始图像
【发布时间】:2026-02-16 10:30:01
【问题描述】:

给定以下代码:

$car= new Car();
$car->name = Input::get('name');
$car->photo = Input::file('photo');
$car->save();

我需要在保存之前裁剪照片(带有偏移)。我尝试使用 ImageResizer 插件,但不知道如何将其 API 与上述代码集成。

【问题讨论】:

标签: laravel image-resizing octobercms


【解决方案1】:

是的,您可以使用 resize image 使用 plugin,但您甚至不需要它,因为在内部它也使用 OctoberCMS built-in Resize function

首先您需要将其保存在磁盘上,然后就地调整其大小。

为此,您可以使用十月 Cms 的内置 Resizer https://octobercms.com/docs/api/october/rain/database/attach/resizer

如果您只需要阅读,也可以裁剪图像 https://octobercms.com/docs/api/october/rain/database/attach/resizer#crop doc,一切顺利。 如果您需要,还有更多选择。

<?php namespace hardiksatasiya/...somethig;

use October\Rain\Database\Attach\Resizer;

// ...

$car= new Car();
$car->name = Input::get('name');
$car->photo = Input::file('photo');
$car->save();

// code to resize image
$width = 100;
$height = 100;
$options = []; // or ['mode' => 'crop']

Resizer::open($car->photo->getLocalPath()) // create from real path
          ->resize($width, $height, $options)
          ->save($car->photo->getLocalPath());

此代码将打开保存的图像,调整大小并将其保存在同一位置。

如果你有任何问题,请评论。

【讨论】:

  • 嗨。当我尝试裁剪照片Resizer::open($car-&gt;photo)-&gt;crop(10, 10, 100, 100)-&gt;save($car-&gt;photo-&gt;getLocalPath()); 时,我收到此错误:Call to undefined method October\Rain\Database\QueryBuilder::guessExtension()。删除这行代码可以修复错误。您是否测试过这段代码并且它有效?
  • 我没有检查它,但如果这也给你错误,我会在测试后检查并纠正它,现在我看到在调整大小时有不同的文件实例,修改代码Resizer::open($car-&gt;photo-&gt;getLocalPath()) 只需检查它是否它是否有效,让我知道。
  • 抱歉发布没有测试我有点着急所以..但是当我有空时我会测试它。
  • 谢谢。我会对其进行测试并尽快回复您。
  • 谢谢。这是保存图像两次,一次是原始图像,然后是调整大小的图像。您认为可以一次裁剪和保存吗?