首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >演示图像压缩,图像在第一次之后不会改变

演示图像压缩,图像在第一次之后不会改变
EN

Stack Overflow用户
提问于 2015-09-21 11:42:14
回答 2查看 24关注 0票数 1

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

代码语言:javascript
复制
<!-- 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>
EN

回答 2

Stack Overflow用户

发布于 2015-09-21 14:14:51

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

票数 0
EN

Stack Overflow用户

发布于 2015-09-21 14:17:11

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

代码语言:javascript
复制
$image = imagecreatefromstring($rawImageBytes);

每一次,你都在创建一个质量较低的新图像,并试图增加质量。否则,您无法提高此图像的质量!

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32687010

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档