上传时如何调整图片大小?
存在即功能: $图像 - > resizeByWidth(宽度)
可以实现调整图像大小的位置 哪些是上传的?
如何将其添加到以下上传示例中:
class GalleryPage extends Page {
private static $many_many = array(
'GalleryImages' => 'Image'
);
function getCMSFields() {
$fields = parent::getCMSFields();
$fields->addFieldToTab(
'Root.Upload',
$uploadField = new UploadField(
$name = 'GalleryImages',
$title = 'Upload one or more images (max 10 in total)'
)
);
$uploadField->setAllowedMaxFileNumber(10);
return $fields;
}
谢谢
答案 0 :(得分:2)
它由CMS自动完成。当你在模板中使用图像时,你会告诉它尺寸,一旦保存或发布它就会调整尺寸(如果它还没有)
答案 1 :(得分:2)
如果您担心上传RAW文件的CMS用户的磁盘空间,例如5MB JPG,然后您可以按照问题中的要求对上传进行重新采样,然后根据需要在模板中进一步调整大小。
如果您使用的是SilverStripe 2.4+,则可以使用此ResampleUpload extension。它会在上传时重新采样图像并删除原始图像。
如果您使用的是SilverStripe 3+,则需要更改上述扩展名以扩展DataExtension
而不是DataObjectDecorator
。我自己没有在SS3下使用过这个,所以可能还需要进行其他一些小的调整,但是看着它我看不到需要进行任何更改,因为它正在修改仍然存在的onAfterUpload
和onAfterWrite
方法。 SS 3中的图像类。
答案 2 :(得分:0)
如前所述,在SS 3中没有开箱即用的功能。这个mod提供了您正在寻找的解决方案:https://github.com/heyday/silverstripe-optimisedimage
首先在root中安装mod。
然后在 mysite / _config / config.yml 中编写以下代码以激活图像重新采样(调整大小)。
Image:
extensions:
- ResampleImage
在同一个config.yml文件中,写出最大分辨率(x =宽度,y =高度显然)。如果用户上传了更大的res照片,它将按比例缩小(保持宽高比)以适应给定的最大res尺寸。
ResampleImage:
max_x: 2000
max_y: 2000