Php 避免拉伸照片

Php 避免拉伸照片,php,css,image,resize,stretch,Php,Css,Image,Resize,Stretch,我怎样才能避免我的照片被拉伸?PHP从文件夹中随机选择2张照片,并使用echo显示它们。但现在,肖像中的所有照片都被拉伸了 <?php if(!empty($images)) { $rand_key = array_rand($images, 1); $src = $images[$rand_key]; echo "<img class=\"flickrphoto\" src='".$src."' align='absmiddle'>"; un

我怎样才能避免我的照片被拉伸?PHP从文件夹中随机选择2张照片,并使用
echo
显示它们。但现在,肖像中的所有照片都被拉伸了

<?php if(!empty($images)) {
    $rand_key = array_rand($images, 1);
    $src = $images[$rand_key];
    echo "<img class=\"flickrphoto\" src='".$src."' align='absmiddle'>";

    unset($images[$rand_key]);
    $rand_key = array_rand($images, 1);
    $src = $images[$rand_key];
    echo "<img class=\"flickrphoto\" src='".$src."' align='absmiddle'>";
} else {
    echo 'Error';
} ?>
**编辑**
当前代码:

   // protrait calculations;
    $size = getimagesize($images_folder_path);
    if($size[0] < $size[1]) {
        $orientation = 'portrait';
    } else {
        $orientation = 'landscape';
    }
//protrait计算;
$size=getimagesize($images\u folder\u path);
如果($size[0]<$size[1]){
$orientation=‘肖像’;
}否则{
$orientation=‘横向’;
}

将它们显示为
的背景,而不是
”;

使用php函数imagesx和imagesy,并将返回值作为图像标记的宽度和高度属性发出。

下面是一篇关于如何使用CSS和HTML保持纵横比的好文章:

此外,还有一个问题也为如何做到这一点提供了一些想法:


基本上,您需要缩放高度或宽度,但不能同时缩放两者。

我只需检查方向是否为protrait,然后添加一个css类

echo "<div class=\"flickrphoto\" style='background: url(".$src.");'></div>";

如何拉伸?我看不到任何东西会将图像拉伸到超出其自然宽度和/或高度。这不是一个好建议,因为如果需要,它们不会缩小。没有必要这样做,这应该可以使用CSS解决。@horatio当你甚至不明白CSS为什么不起作用时,你不应该急于跳到sol这会占用服务器上的资源。我知道这不起作用,因为他指定了(最大)高度和(最大)宽度,而不考虑图片的纵横比,他必须确定图片是“纵向”还是“横向”“纵横比。这可以在服务器或客户端上完成。你关心函数调用的时间和资源,这让我很感动,但答案并没有错。如果你的答案中包含了这一点,那就太好了,我当然不会否决说明问题根源的完整答案。giorgio已经解决了这个问题,尽管使用
getimagesize
而不是
imagesx
imagesy
这似乎是一个很好的解决方案,但纵向计算总是给出
横向
属性。。。你知道怎么做吗?你打印出$size[0](应该是宽度)和$size[1](高度)变量了吗?也许这有问题。或者你的图像不是“真正”的肖像和风景,只是长宽比不同?在这种情况下,您应该这样做:$ratio=$size[0]/$size[1]$方向=($比率>1.2)?“横向”:“纵向”;(你应该知道1.2位应该是什么)我现在调整的代码在我原来的帖子中有说明。也许我做错了什么?
$images\u folder\u path
是我的文件夹路径(
images/photos/
)@Michiel,而不是
$images\u folder\u path
检查方向时,需要类似于
$images\u folder\u path的内容$src
获取您刚才随机选择的映像的完整路径。但它是完整的服务器路径吗?(这与“web”路径不同,例如:完整服务器路径/images/photos/与不同的文件夹),--edit:并检查@Michiel的评论!
echo "<div class=\"flickrphoto\" style='background: url(".$src.");'></div>";
<?php if(!empty($images)) {
$rand_key = array_rand($images, 1);
$src = $images[$rand_key];

// protrait calculations;
$fullpath = // statement to fetch the path on the server
$size = getimagesize($fullpath);
if($size[0] < $size[1]) {
   $orientation = 'portrait';
} else {
   $orientation = 'landscape';
}

echo "<img class=\"flickrphoto ". $orientation ."\" src='".$src."' align='absmiddle'>";

unset($images[$rand_key]);
$rand_key = array_rand($images, 1);
$src = $images[$rand_key];
echo "<img class=\"flickrphoto\" src='".$src."' align='absmiddle'>";
} else {
    echo 'Error';
} ?>
img.flickrphoto {
    max-width: 100px;
    max-height: 100px;
    overflow: hidden;
}
img.flickrphoto.portrait {
    max-width: 50px;
}