在 Silverstripe ModelAdmin 中上传时调整图像大小
Resize images on upload in Silverstripe ModelAdmin
我是 Silverstripe 的新手,无法在文档或 SO 上找到我的问题的答案。
我将 Silverstripe 纯粹用作 CMS:没有网站作为前端。
我有最简单的 DataObject Product
和 ModelAdmin ProductAdmin
如下:
class Product extends DataObject
{
private static $db = array(
'Name' => 'Varchar',
'Copy' => 'Text'
);
private static $has_one = array(
'MyImage' => 'Image'
);
}
class ProductAdmin extends ModelAdmin
{
private static $managed_models = array(
'Product'
);
private static $url_segment = 'product';
private static $menu_title = 'Product';
}
/dev/build
之后,我的管理面板就建立好了,我可以像往常一样将高分辨率图片上传到 'Uploads' 目录。
我希望 CMS 在上传时 将图像重新采样为几种不同的尺寸,同时保留原始图像。新图像和原始图像也需要保存到 FlushGeneratedImagesTask 不会删除它们的位置。通过查看文档,我知道图像可以轻松调整大小,但我不清楚在哪里(或如何)添加所需的自定义功能。有人可以帮忙吗?
(我认为 Silverstripe 3.1 - resize image on upload 最接近回答这个问题,但是缺少一个步骤来说明如何让 CMS 使用 new/overridden 功能。)
我正在使用 Silverstripe 3.1 版
- 创建一个新的 class 扩展图像的 MyImage。
- 在您的 MyImage class 中创建一个函数
onBeforeWrite()
。
- 在此函数中,制作一个新图像
$image = Image::create()
。您可以在此处设置重采样图像的文件名、名称、标题、ParentID 等
- 使用
$image->SetWidth(...)
调整图片大小
- 更新数组
Product::$has_one
说 MyImage => MyImage
我是 Silverstripe 的新手,无法在文档或 SO 上找到我的问题的答案。
我将 Silverstripe 纯粹用作 CMS:没有网站作为前端。
我有最简单的 DataObject Product
和 ModelAdmin ProductAdmin
如下:
class Product extends DataObject
{
private static $db = array(
'Name' => 'Varchar',
'Copy' => 'Text'
);
private static $has_one = array(
'MyImage' => 'Image'
);
}
class ProductAdmin extends ModelAdmin
{
private static $managed_models = array(
'Product'
);
private static $url_segment = 'product';
private static $menu_title = 'Product';
}
/dev/build
之后,我的管理面板就建立好了,我可以像往常一样将高分辨率图片上传到 'Uploads' 目录。
我希望 CMS 在上传时 将图像重新采样为几种不同的尺寸,同时保留原始图像。新图像和原始图像也需要保存到 FlushGeneratedImagesTask 不会删除它们的位置。通过查看文档,我知道图像可以轻松调整大小,但我不清楚在哪里(或如何)添加所需的自定义功能。有人可以帮忙吗?
(我认为 Silverstripe 3.1 - resize image on upload 最接近回答这个问题,但是缺少一个步骤来说明如何让 CMS 使用 new/overridden 功能。)
我正在使用 Silverstripe 3.1 版
- 创建一个新的 class 扩展图像的 MyImage。
- 在您的 MyImage class 中创建一个函数
onBeforeWrite()
。 - 在此函数中,制作一个新图像
$image = Image::create()
。您可以在此处设置重采样图像的文件名、名称、标题、ParentID 等 - 使用
$image->SetWidth(...)
调整图片大小
- 更新数组
Product::$has_one
说MyImage => MyImage