Silverstripe 上载时调整图像大小

Silverstripe 上载时调整图像大小,silverstripe,Silverstripe,上传图像时如何调整图像大小 存在,即功能: $image->resizeByWidth(宽度) 其中可以实现图像的大小调整 哪些是上传的 如何将其添加到以下上载示例中: class GalleryPage extends Page { private static $many_many = array( 'GalleryImages' => 'Image' ); function getCMSFields() { $fields

上传图像时如何调整图像大小

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

谢谢

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

这是CMS自动完成的。当您在模板中使用图像时,您会告诉它尺寸,并在保存或发布(如果尚未发布)后立即调整图像大小。

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

如果您使用的是SilverStripe 2.4+,那么您可以使用这个。它会在上传时对图像重新采样并删除原始图像


如果您使用的是SilverStripe 3+,则需要将上述扩展更改为extend,而不是
DataObjectDecorator
。我自己没有在SS3下使用过这个方法,所以可能还需要其他一些小的调整,但是我看不到任何需要的更改,因为它正在修改SS3中仍然存在于Image类中的
onAfterUpload
onAfterWrite
方法。

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

如果您使用的是SilverStripe 2.4+,那么您可以使用这个。它会在上传时对图像重新采样并删除原始图像


如果您使用的是SilverStripe 3+,则需要将上述扩展更改为extend,而不是
DataObjectDecorator
。我自己没有在SS3下使用过这个方法,所以可能还需要其他一些小的调整,但是看看它,我看不到任何需要的更改,因为它正在修改SS3中仍然存在于Image类中的
onAfterUpload
onAfterWrite
方法。

如前所述,SS3中没有现成的功能。此mod提供了您正在寻找的解决方案:

首先在root中安装mod

然后在mysite/_config/config.yml中编写以下代码以激活图像重采样(调整大小)

在同一config.yml文件中,写入最大分辨率(x=宽度,y=高度)。如果用户上传更大分辨率的照片,它将被缩小(保持纵横比)以适应给定的最大分辨率尺寸

ResampleImage:
  max_x: 2000
  max_y: 2000

如前所述,SS 3中没有此功能的现成功能。此mod提供了您正在寻找的解决方案:

首先在root中安装mod

然后在mysite/_config/config.yml中编写以下代码以激活图像重采样(调整大小)

在同一config.yml文件中,写入最大分辨率(x=宽度,y=高度)。如果用户上传更大分辨率的照片,它将被缩小(保持纵横比)以适应给定的最大分辨率尺寸

ResampleImage:
  max_x: 2000
  max_y: 2000

在哪些情况下,您会使用此功能$image->resizeByWidth(宽度)也可以从SilverStripe模板文件中调整图像大小。例如,$Image.SetWidth(200)在哪些情况下使用此功能$image->resizeByWidth(宽度)也可以从SilverStripe模板文件中调整图像大小。例如$Image.SetWidth(200)