【问题标题】:Silverstripe upload and interlace imageSilverstripe 上传和交错图像
【发布时间】:2014-04-25 00:30:12
【问题描述】:

我正在尝试导航 GDBackend 的 Silverstripe 类定义,但无法设置交错值。

我目前在_config.php 中设置质量:

config::inst()->update('GDBackend', 'default_quality', 60);

然后我尝试使用以下设置隔行扫描:

config::inst()->update('GDBackend', 'image_interlace', 1);

这是设置这些值的正确方法吗?很难知道此类中所有的弃用情况。

上传图片时,文件大小会减小 - 因此质量似乎设置正确,但隔行扫描设置无效。

此外,日志没有任何错误。

-------------------- 更新:

在咨询 Silverstripe IRC 频道后,我已将配置设置移动到 yml 中,如下所示。

GDBackend: default_quality: 60 image_interlace: 1

上传后图像仍然没有交错。

我正在使用this tool 来测试隔行扫描。

-------------------- 结论:

事实证明,这些设置不是上传处理的一部分,仅适用于 CMS 生成的图像。例如,前缀为 SetWidth400-image-name.jpg 的图像将按照 yml 配置的指示进行交错和优化。

我将研究扩展上传模块,让用户可以选择在上传时交错图像。

感谢 colymba 帮助我解决这个问题。

【问题讨论】:

    标签: php image gd silverstripe interlacing


    【解决方案1】:

    就像你提到的隔行扫描是通过 YML 配置设置的。要启用它应该是 0 以外的任何值,如 PHP 配置中提到的 If non-zero, the image will be interlaced, else the interlace bit is turned off.

    请注意,当您上传图片时,此图片不会在上传时自动处理。图像质量和隔行扫描仅适用于生成的图像。

    【讨论】:

    • 哦,好的,所以缩略图和重新采样的图像应该应用隔行扫描?我想这很有意义。我会检查一下,看看它是否按预期工作。
    • 我上传了图像并将其放入 WYSIWYG 字段(认为 GD 可能会在放置时对其施展魔法)。前端生成的图像仍然不是渐进式的。如何为所有上传的图片强制执行这些设置?
    • 全新安装对我来说一切正常。所有生成的图像都是隔行扫描的,甚至通过所见即所得。还要记住,如果您请求(WYSIWYG 或模板或 setWidth...)与您上传的 SS 大小相同的图像将提供原始图像,因此此处没有隔行扫描。你是什​​么配置?有什么特殊代码吗?
    • 我们一直在努力构建我们的样板文件,因此配置文件被样板文件中的配置文件级联。除此之外,没有什么特别的。所以我很清楚,在全新安装时,您上传了图像 - 在生成隔行扫描图像的 tmeplate 中运行了调整大小(或类似)?当您引用原始上传的图像时,没有隔行扫描?我会试试这个,看看我是否得到相同的结果。我希望在所有上传的图片上都能正常工作。
    • 只是一个想法,如果你有不同的 yml 配置,例如从您的样板 + 项目中,使您想要使用的配置不会被覆盖。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-16
    • 1970-01-01
    • 1970-01-01
    • 2017-06-17
    • 1970-01-01
    • 2012-09-20
    • 1970-01-01
    相关资源
    最近更新 更多