上传时调整图像大小

时间:2013-11-10 21:36:47

标签: silverstripe

上传时如何调整图片大小?

存在即功能: $图像 - > 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;        
    }   

谢谢

3 个答案:

答案 0 :(得分:2)

它由CMS自动完成。当你在模板中使用图像时,你会告诉它尺寸,一旦保存或发布它就会调整尺寸(如果它还没有)

答案 1 :(得分:2)

如果您担心上传RAW文件的CMS用户的磁盘空间,例如5MB JPG,然后您可以按照问题中的要求对上传进行重新采样,然后根据需要在模板中进一步调整大小。

如果您使用的是SilverStripe 2.4+,则可以使用此ResampleUpload extension。它会在上传时重新采样图像并删除原始图像。

如果您使用的是SilverStripe 3+,则需要更改上述扩展名以扩展DataExtension而不是DataObjectDecorator。我自己没有在SS3下使用过这个,所以可能还需要进行其他一些小的调整,但是看着它我看不到需要进行任何更改,因为它正在修改仍然存在的onAfterUploadonAfterWrite方法。 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