jpeg - 渐进式 JPEG 的完整缩略图需要多少字节?

标签 jpeg libjpeg progressive

我正在尝试构建一个上传器,它分两步上传渐进式文件:

  • 上传最小字节数以创建缩略图 (0-10%)
  • 上传缩略图的其余字节。 (11%-100%)

  • 我想这样做是为了让缩略图更早可用,而不必上传单独的缩略图。
    拍摄由 jpegtran -copy all -progressive -outfile progressive.jpg original.jpg 创建的图像(3426398 字节)然后用 dd if=progressive.jpg of=thumb.jpg bs=1 count=350000 取前 350000 个字节我得到了一个有效的缩略图。
  • 原文:https://dl.dropbox.com/u/5910/thumbtest/progressive.jpg
  • 缩略图:https://dl.dropbox.com/u/5910/thumbtest/thumb.jpg

  • 有没有办法找出我必须传输多少字节才能获得所有行都可用的图像?从而只会失去图像质量?

    最佳答案

    渐进式 JPEG 图像由一系列“扫描”组成。每次扫描逐渐为每个 MCU 块提供更多信息(更多 A/C 系数)。第一次扫描通常只是每个 MCU 的 DC 值。这恰好是为您提供 1/8 大小缩略图的完美信息量。

    在 JPEG 文件中,每次扫描都以 FFDA 的 SOS(扫描开始)标记开始。为了知道完全保持第一次扫描需要多少数据,只需搜索第二次扫描(第二个 FFDA 标记)开始的文件数据,您就会得到答案。由于标记字节规则,2 字节序列 FF DA 只能是 SOS 标记。需要编码值 FF 后跟 DA 的压缩数据必须编码为 FF 00 DA。

    关于jpeg - 渐进式 JPEG 的完整缩略图需要多少字节?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14919839/

    相关文章:

    java - 如何将 XMP XML block 序列化为现有的 JPEG 图像?

    c++ - 在 vs c++ 2017 中链接 libjpeg-turbo

    JavaScript img onload - 渐进式 jpg/jpeg

    networking - 是否有现成的解决方案可以根据浏览器分辨率发送部分隔行扫描 JPEG?

    opencv - 在二值化过程中防止JPEG压缩伪影

    linux - 如何读取 jpeg 量化表?

    javascript - 如何在 Javascript 中设置 JPEG/PNG 图像的分辨率/密度?

    c++ - 使用 libjpeg 读取 .jpeg 文件时出错

    upgrade - 如何将MAMP的PHP升级到PHP 5.3?

    progressive-web-apps - url 显示在渐进式网络应用程序的地址栏中