将图像旋转90度

时间:2018-04-16 22:30:10

标签: php image

我可以将图像上传到Web服务器并将该位置存储在数据库中,如下所示:

/123cb2kbls.62452152.jpg

然后,我可以检索文件的位置并将其显示到Web浏览器,没有问题,如下所示:

$row['pic_loc'] // has a value of '/123cb2kbls.62452152.jpg'

while($row = mysqli_fetch_array($result)) {
    $width = 900;
    $display_height = $width*$row["height_ratio"];
    $source = $row["pic_loc"];

    echo "<p><td><img src='" . $source     ."' width=$width height=$display_height></p></td>";          
}

我的挑战是我无法让imagerotate()使用我while()循环中的以下代码将图像翻转90度:

$rotate90 = imagerotate($source,90,0);
echo "<p><td><img src='" . $rotate90   ."' width=$display_height height=$width></p></td>";

唯一发生的事情是我看到一个已旋转90度的文件轮廓,但没有显示图像。

2 个答案:

答案 0 :(得分:1)

您必须按照以下<{1}}创建图像

const regexp = /\$times/g;

答案 1 :(得分:1)

根据你所拥有的(我可能是错的)判断,我认为css可能会更好,而不是使用一堆服务器电源,特别是如果你没有保存永久轮换到图像:

<style>
.pic-loc-rotate img {
    transform: rotate(90deg);
}
</style>

<?php
while($row = mysqli_fetch_array($result)):
    $width  = 900;
    $height = ($width * $row["height_ratio"]) ?>

    <td class="pic-loc-rotate">
        <p><img src="<?php echo $row["pic_loc"] ?>" width="<?php echo $width ?>" height="<?php echo $height ?>" /></p>
    </td>

<?php endwhile ?>

通过CSS旋转:

https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/rotate

如果你真的想通过服务器旋转图像(但不想存储它们),你可以使用输出缓冲区和base64_encode(),但CSS绝对是一个更好的解决方案:

<?php
while($row = mysqli_fetch_array($result)):
    # Start the buffer so the image doesn't output to the browser yet
    ob_start();
    # Fetch your image and rotate it
    # Create to the buffer
    imagejpeg(imagerotate(imagecreatefromjpeg($row["pic_loc"]), 90, 0));
    # Encode the contents of the output buffer to base64
    $imageBase64    =   base64_encode(ob_get_contents());
    # Clear buffer
    ob_end_clean();
    # Do your other stuff
    $width  = 900;
    $height = ($width * $row["height_ratio"]) ?>

        <td class="pic-loc-rotate">
            <p><img src="data:image/jpeg;base64,<?php echo $imageBase64 ?>" width="<?php echo $width ?>" height="<?php echo $height ?>" /></p>
        </td>

<?php endwhile ?>