自定义图像大小/缩略图-即使源图像小于设置的尺寸,也可以裁剪到纵横比

时间:2016-07-24 作者:Joey Joe Joe Junior Shabadoo

通常,当您使用硬裁剪设置自定义图像大小时-例如。add_image_size( \'custom-size\', 400, 400, true ); - 您将得到以下结果:

上传图像:600x500>缩略图:400x400缩略图:400x300缩略图:300x200但是,我想做的是当上传的图像小于自定义图像大小的设置宽度或高度,或两者都小于时,例如示例#2&#上图3-图像不是被裁剪以适应这些尺寸,而是被裁剪以匹配其纵横比(在本例中为1:1),如下所示:

上传图像:600x500>缩略图:400x400

  • \\2上传图像:500x300>缩略图:300x300.
  • \\3上传图像:300x200>缩略图:200x200.
  • 我不认为使用标准的“添加图像大小”选项可以实现这一点,但是否可以使用不同的功能,或修改“添加图像大小”功能的挂钩?

    或者是否有添加此功能的插件?

    任何人能提供的任何信息都将不胜感激。

    2 个回复
    SO网友:Bryan Willis

    这不是一个很好的解决方案,因为它是一个较新的CSS解决方案,并且只在78.9% of users browsers, 但有一些聚填料可以克服这一点object-fit-imagesfitie

    img {
        display: block;
        overflow: hidden;
        width: 400px;
        height: 400px;
        -o-object-fit: cover;
           object-fit: cover;
    }
    
    理想情况下,如果上传时较小的图像按比例缩放会更好,但我还没有找到解决方案。

    SO网友:Andy Macaulay-Brook

    你说得对,事情不是这样的。

    如果你可以换一种方式思考你的问题,那么在现代浏览器中,你可以通过选择图像大小和响应图像来获得正确的结果。

    如果使用如下代码:

    add_image_size( \'custom-size-small\', 200, 200, true );
    add_image_size( \'custom-size-medium\', 300, 300, true );
    add_image_size( \'custom-size-large\', 400, 400, true );
    
    。。。在模板中,类似于:

    wp_get_attachment_image( $image_ID, \'custom-size-small\' )
    
    。。。然后,默认情况下(WP 4.4及更高版本),您将获得一个图像标签,其中包含集合中的最小版本作为src 以及srcset 属性,较新的浏览器将从中选择并显示最大的适当版本。

    所以,如果一个特定的图像没有更大的版本,那也没关系。一幅图像300x200 将有一个200x200 版本,该版本将是HTML中唯一的版本,所有浏览器都将显示该版本。

    我在调整响应图像时解决了这个问题,以便在只支持src 而不是srcset.

    相关推荐

    Images with overlay

    我有一些图片在一个容器中,我想添加一个覆盖和图标。这不是现成的,但我找到了一些有用的代码:HTML:<div class=\"main\"> <span class=\"featured\"><img src=\"http://joshrodg.com/IMG_001-258x258.jpg\" title=\"\" alt=\"\"></span> </div> CSS:.featured {