从目录加载图像后的PHP - 错误的方向

时间:2015-01-11 11:27:50

标签: php image file orientation landscape-portrait

实际上,我正在使用一个简单的PHP代码段来遍历目录以获取图像并将其插入到html标记中。

现在我面临的问题是所有图像都是横向的。因此,肖像图像也被定位为风景图像。

这是我的片段:

    <?php 
    $projectpath = 'Projects';
    $projects = glob($projectpath . '/*' , GLOB_ONLYDIR);
    foreach($projects as $key=>$value): ?>
        <section class="project">
            <div class="container">
                <div class="row">
                    <div class="col-xs-12">
                        <div class="project-images">
                            <?php 
                                $handle = opendir(dirname(realpath(__FILE__)).'/'.$value);
                                while($file = readdir($handle)){                                        
                                    if($file !== '.' && $file !== '..'){
                                        echo '<img class="img-responsive" alt="'. $file .'" src="'. $value .'/'. $file .'"/>';
                                    }
                                }                                                                    
                            ?>
                        </div>
                    </div>
                </div>
            </div>
        </section>
    <?php endforeach; ?>

那么我在这里失踪了什么?有什么建议吗?

2 个答案:

答案 0 :(得分:1)

我怀疑这些图像确实有不同的方向。更可能所有图像都采用横向布局(宽度大于高度),因此从技术角度来看,可视化是正确的。

我猜您通常会在PC上使用某些查看器查看图像,这些图像会根据存储在图像元数据中的某些方向标记自动旋转图像。但是这样的标志会改变真实的技术方向(或更好的分辨率)。相反,这种标志只是图像可视化的提示。你的项目没有参考那个标志,这就是为什么你的图像出现要旋转,而实际上它们不是。

所以解决方案是两个选项之一:

  1. 在项目中使用之前旋转图像,这样它们的真实技术方向是正确的,只需要显示图像而无需任何额外的旋转。

  2. 使用js或php或其他任何方法来检测该方向标志并对其进行评估。根据结果​​,您可以设置一些css类,从而导致需要旋转以进行可视化的那些图像的基于CSS的旋转。

答案 1 :(得分:1)

这是一个简单的PHP示例,用于检查图像是纵向还是横向:

<?php

$imagePath = 'images/imagename.png';
$imageSize = getimagesize($imagePath); //returns an array
$imageWidth = $imageSize[0]; // array key 0 is width
$imageHeight = $imageSize[1]; // array key 1 is height

if($imageWidth < $imageHeight){
    echo '<img class="ROTATE">'//add the rotate class
} elseif($imageWidth > $imageHeight){
    echo '<img>'//do not add the rotate class
} else {
    echo '<img>'//do not add the rotate class
?>

请注意,这只是一个示例,您必须调整脚本才能正常使用。