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

从目录加载图像后的PHP-方向错误,php,image,file,orientation,landscape-portrait,Php,Image,File,Orientation,Landscape Portrait,实际上,我正在使用一个简单的PHP代码段来遍历一个目录,以获取图像并将其插入html标记中 现在我面临的问题是,所有的图像都是面向风景的。因此,肖像图像也被定位为风景图像 以下是我的片段: <?php $projectpath = 'Projects'; $projects = glob($projectpath . '/*' , GLOB_ONLYDIR); foreach($projects as $key=>$value): ?>

实际上,我正在使用一个简单的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; ?>


那么我在这里遗漏了什么?有什么建议吗?

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

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

因此,解决方案是两种选择之一:

  • 在项目中使用图像之前,先旋转图像,使其真实的技术方向正确,并且只需显示图像而无需进行任何其他旋转

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


  • 下面是一个简单的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
    ?>
    
    
    

    请记住,这只是一个示例,您必须调整脚本才能正常工作。

    您可以创建一些CSS将照片旋转90度。CSS如何验证方向?我假设您的横向图像的宽度值大于高度值,而对于肖像图像则是相反的,所以检查哪一个更大,然后根据它来决定是否必须旋转。好的,我们讨论的是javascript或jquery:)我会使用PHP,检查文档中的getimagesize()函数,用它创建一个if-else语句,你就可以开始了。方向是不同的。。。通过元信息检查。这是我的第一种方法。对不起,在web应用程序中没有自动/自动旋转图像的实例。如果这些图像真的有不同的方向,它们将以不同的方向显示。你在这里遗漏了一些东西。你是怎么检查方位的?您使用了什么工具?实际上,只有在您没有(意外地)根据css规则或类似规则自行旋转图像时,上述注释才有效。检查所有这些css类及其在浏览器中的效果。:-)你是对的!这是一个定位问题。我用photoshop再次检查,方向是一样的!我只需在photoshop中旋转它,现在它就可以完美地工作了!谢谢你很好你解决了它!一般提示:在这种情况下,当试图找出真正的技术细节时,最好使用简单的命令行工具,而不是一些花哨的图形工具。对于正常的任务来说,它们是舒适的,但是它们从不向你展示真实的世界,而是总是它们自己的解释,这通常会导致错误的印象:-)如果图像是正方形大小的话:-)始终提供默认/其他情况!感谢您添加
    else
    案例。但实际上,您可以简单地删除
    elseif
    case…:-)是的,但这使您可以选择在将来扩展应用程序。感谢您提供的代码片段,我认为这会起作用。在我的情况下,这确实是一个定位问题!