Php 演示图像压缩,图像isn';第一次之后就不会改变了

Php 演示图像压缩,图像isn';第一次之后就不会改变了,php,Php,所以,我试图写一个非常简单的小页面来演示转码和压缩。我不明白为什么图像在第一次出现后似乎没有改变 <!-- imagemanipulation.php --> <!DOCTYPE html> <html lang="en"> <head> <title>Image Transcoding Example</title> </head> <body> <h1>Image Transcodin

所以,我试图写一个非常简单的小页面来演示转码和压缩。我不明白为什么图像在第一次出现后似乎没有改变

<!-- imagemanipulation.php -->
<!DOCTYPE html>
<html lang="en">
<head>
<title>Image Transcoding Example</title>
</head>
<body>
<h1>Image Transcoding Example</h1>
<form action="imagemanipulation.php" method="POST">
Quality (0 - 100): <input type="text" name="quality" value="<?php echo (isset($_POST['quality']) ? $_POST['quality'] : ""); ?>"><br />
Iterations: <input type="text" name="iterations" value="<?php echo (isset($_POST['iterations']) ? $_POST['iterations'] : "")?>"><br />
<input type="submit">
</form>
<hr />

<?php
if (isset($_POST['quality']) && isset($_POST['iterations']))
{
    $quality = intval($_POST['quality']);
    $iterations = intval($_POST['iterations']);
    $image = imagecreatefromjpeg("image.jpeg");
    for ($i = 0; $i < $iterations; $i++)
    {
        ob_start();

        imagejpeg($image, NULL, $quality);

        $rawImageBytes = ob_get_clean();

        echo "<img width=100 height=100 src='data:image/jpeg;base64," . base64_encode($rawImageBytes) . "' />";

        imagedestroy($image);
        $image = imagecreatefromstring($rawImageBytes);
    }
}
?>

</body>
</html>

图像转码示例
图像转码示例

质量(0-100):这是JPEG编码器的预期行为。如果使用特定编码器配置编码的图像被解码并使用相同配置重新编码,结果将与原始编码图像相同——“往返”不会改变图像。

这是JPEG编码器的预期行为。如果使用特定编码器配置编码的图像被解码并使用相同配置重新编码,结果将与原始编码图像相同——“往返”不会改变图像。

在循环结束时,您会:

$image = imagecreatefromstring($rawImageBytes);
每次,你都会创建一个质量较低的新图像,并尝试提高质量。或者,您无法提高此图像的质量


您应该删除这一行并保留第一个image.jpeg中的$image。

在循环结束时,您可以执行以下操作:

$image = imagecreatefromstring($rawImageBytes);
每次,你都会创建一个质量较低的新图像,并尝试提高质量。或者,您无法提高此图像的质量

您应该删除此行,并保留第一个image.jpeg中的$image