【问题标题】:How can I apply classes to images based on their aspect ratio with PHP?如何使用 PHP 根据图像的纵横比将类应用于图像?
【发布时间】:2011-09-22 20:03:48
【问题描述】:

我正在开发一个 drupal6 网站,并且我有一个显示缩略图的页面(链接到完整的节点内容)。

图片目前允许有基于父div的动态宽度,并且是垂直和水平的。

我遇到的问题是这些图像应用了最大宽度,这会破坏我的水平图像。 我的问题是:如何使用 PHP 获取具有唯一 ID 的图像元素,发现它是水平的还是垂直的,并根据图像的方面应用 CSS 类。

我需要把它作为预处理放在我的template.php 中,或者放在我的page.tlp.php 中。 我不能使用 Jquery/javascript,因为我不能冒 FOUC 的风险。我还按照说明将此站点开发为多站点 drupal 安装程序,并且我不允许在我自己的站点目录文件夹之外拥有任何东西。

我查看了 getimagesize() 和 getElementsByTagName() 但我只是不确定如何将它们组合在一起,因为我的 PHP 非常有限。我希望这里有人可以指出我正确的方向,而不是给出我的答案。

谢谢 斯蒂芬妮

【问题讨论】:

    标签: php css drupal-6


    【解决方案1】:

    基本使用getimagesize提取图片的宽高。然后比较两者。如果宽度大于高度,则打印image-horizontal,否则打印image-vertical。这是一个可以完成这项工作的示例代码。它使用list 来获取getimagesize 数组返回的前两个元素,即宽度和高度。然后在echo 语句中,我们进行检查并打印相应的类:

    list($width, $height) = getimagesize($your_full_path_to_image);
    echo '<img src="'.$your_url_to_image.'" class="'.(($width > $height) ? 'image-horizontal' : 'image-vertical').'" />';
    

    【讨论】:

    • 谢谢你的帮助,我只有一个问题——我要把这个放在文档的头上吗?还是作为 IMG 标签的添加/替换?
    • 你应该把它作为IMG标签的替代品。
    • 我已将您的代码添加到我的测试中,但我不确定在哪里声明 $your_full_path_to_image 和 $your_url_to_image 这两个变量 - 我尝试添加位于同一文件夹中的图像作为测试代码,只得到“水平”的返回。我改变了代码看起来像这样 'code'"; ?>'code' 它返回 300) 的源视图 ? 'image-horizo​​ntal' : 'image-vertical'.'"/>
    • 对不起,我敢打赌。我忘记在三元运算符周围放置一个 ()。我会修改代码
    • 感谢您的帮助 - 但现在我看到没有图像的蓝色或红色边框(我在 VAR 上做错了),有什么想法吗? '; ?> 我还必须弄清楚如何通过 ID 获取图像元素,因为我无法替换我的图像标签。感谢您的帮助,谢谢
    【解决方案2】:

    作为后续,我很遗憾地说我从来没有按照我在原始问题中提出的方式进行这项工作。 我不确定这是不可能的,在我的特定情况下是不可能的,还是我根本无法弄清楚。

    我最终使用直接的 css 进行缩放并通过添加背景来伪造一致的宽度

    【讨论】:

      猜你喜欢
      • 2017-11-13
      • 2016-06-14
      • 1970-01-01
      • 2021-06-06
      • 2018-10-25
      • 2019-04-02
      • 1970-01-01
      • 2010-11-25
      相关资源
      最近更新 更多