【问题标题】:Reduce image quality on the fly and display lower quality version动态降低图像质量并显示质量较低的版本
【发布时间】:2013-04-07 19:40:01
【问题描述】:

我有一个使用 Wordpress 允许用户提交图片的竞赛网站。有 700 多个条目,每个条目最多 6 个图像,每个图像的最大文件大小为 3mb。

然后我将所有条目列为帖子,然后在每个帖子上显示图像。

每张图片都使用the_field('image1');the_field('image2');the_field('image3');等显示。

我遇到的问题是该页面尝试以 3mb 的速度加载 6 张图像。有没有办法动态优化图像并以 50% 的质量显示?

【问题讨论】:

  • 一张普通的网络图片不能超过 150k。你从哪里得到的 3Mb?
  • @YourCommonSense 我不太确定如何回答这个问题 - 上传的人的图片是 3mb,Wordpress 上传部分中的文件是 3mb,当它显示在页面上并下载时是 3mb .

标签: php jquery wordpress


【解决方案1】:

您可以在从数据库(或文件)中提取图片后即时调整图片大小,而无需创建另一个临时文件。大概你有一个从数据库中获取图像的 URL。

$pdo = new PDO("somewhere");
$sql = "SELECT image_data FROM pictures WHERE id=1";

$stmt = $pdo->query( $sql );
$obj = $stmt->fetch(PDO::FETCH_OBJ);

$img = imagecreatefromstring($obj->image_data);

header('Content-Type: image/jpeg');
imagejpeg($img, NULL, 50);

imagedestroy($img);

如果您将 NULL 作为文件名传递给imagejpeg,它会将 jpeg 写入标准输出。第三个参数是质量水平,在本例中为 50%。

【讨论】:

    【解决方案2】:

    图片上传后,可以保存2张图片。 1.原图 2.图像的低分辨率副本

    因此,当用户查看页面时,最初会显示低分辨率图像,而原始图像正在后台下载。

    您可以很容易地找到一些现成的代码来通过 php 调整图像大小。像这个。 http://www.white-hat-web-design.co.uk/blog/resizing-images-with-php/

    【讨论】:

    • 图片已经上传,上传时无法上传。我认为有一些本地 Wordpress 功能可以做到这一点,但似乎并非如此。有没有办法在不重新保存图像的情况下做到这一点?我知道这可能是服务器很重,但我们有一个巨大的服务器来处理这个问题,任何事情都是对尝试一次加载的 18mb 图像的改进!
    • 您可以应用批处理代码,生成服务器上已有图像的低分辨率副本。
    【解决方案3】:
    $file =  $_GET['file'];//URL with img parameter http://localhost/fk/test.php?file=1.jpeg
    $quality = 40; //Change What quality you needed
    $location = "images/".$file;
    $image = imagecreatefromjpeg($file);
    imagejpeg($image, $location, $quality) ;
    header('Content-Type: image/jpeg');
        header('Content-Length: ' . filesize($location));
        header('Content-Disposition: inline; filename="'.$file.'"');
        echo file_get_contents($location);
    

    【讨论】:

    • 帖子已回复,下次请提供更多信息作为链接并检查其他 cmet 以查看帖子是否需要更新。谢谢。
    【解决方案4】:

    无法即时调整图像大小。对于这种拒绝服务的自我攻击,只有直接的方法可以使 CPU 窒息。

    图片必须在上传后立即预先调整到合理的大小和质量。世界上每个网站都是这样的。

    【讨论】:

    • 当我加载页面时,它会慢慢地加载,你可以看到图像加载缓慢 - 它绝对是 3mb。
    猜你喜欢
    • 2019-08-23
    • 2017-08-03
    • 1970-01-01
    • 2016-06-06
    • 2010-11-12
    • 2012-11-07
    • 1970-01-01
    • 1970-01-01
    • 2016-02-09
    相关资源
    最近更新 更多