【问题标题】:How to serve an image as a stream [duplicate]如何将图像作为流提供[重复]
【发布时间】:2019-08-24 08:54:07
【问题描述】:

在我多年使用网络(以及偶尔开发网站)的过程中,我注意到有些网站提供的图片与其他网站不同。

  1. 第一种是先提供低质量的图像,然后逐渐提供更多的数据,使图像变得更清晰。
  2. 第二种提供图像,就好像它是从上到下垂直扫描一样。

这张图片说明了我想说的

据我所知,我设置的每个 PHP、NodeJS 服务器都像第二种那样提供图像。

所以我的问题是如何在 PHP 或 NodeJS(使用 ExpressJS)中实现行为 1?

PS

没有 javascript/ajax/(正在使用任何 3rd 方库)

我注意到这件事的网站没有使用 JS/multiple request 来实现这一点。这都是纯粹的服务器端。

【问题讨论】:

  • 您必须使用隔行扫描(而不是逐行扫描)创建图像文件才能获得您想要的效果en.wikipedia.org/wiki/Interlacing_(bitmaps)这与图像的提供方式无关
  • 第一个文件没有被“流式传输”,它是一个“渐进式 JPEG”文件,而第二个文件是一个“基线”JPEG 文件。
  • 如果你想在 PHP 中将 JPEG 图像转换为隔行扫描,有这个stackoverflow.com/questions/41732652/…

标签: php node.js image server streaming


【解决方案1】:

首先,你可以使用PHP的image magick,

$im = new imagick();
$im->setResolution(200,200);
$im->readImage('path to the image');
$im->writeImage('path to store the new image with name of image and extension'); 
$im->clear(); 
$im->destroy();

您需要在读取图像之前设置分辨率。然后根据您的用例重复脚本。

希望对你有所帮助。

【讨论】:

    猜你喜欢
    • 2023-03-17
    • 2021-01-15
    • 2010-11-17
    • 2017-03-29
    • 1970-01-01
    • 2019-10-05
    • 1970-01-01
    • 2018-08-29
    • 1970-01-01
    相关资源
    最近更新 更多