AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / computer / 问题 / 1826821
Accepted
Abdullah Ibn Fulan
Abdullah Ibn Fulan
Asked: 2024-01-22 16:59:36 +0800 CST2024-01-22 16:59:36 +0800 CST 2024-01-22 16:59:36 +0800 CST

如何防止 JPEG-PDF 往返转换中文件过大?

  • 772

TL;DR:JPEG 和 PDF 之间的往返转换中文件大小加倍。使用的工具:poppler和imagemagick

我正在做这个

  1. 从仅包含图像(扫描文档)的 pdf 中提取图像,pdfimags通过poppler
  2. 进行无损编辑(旋转)(或不执行任何操作)
  3. 将图像转换为pdf,via imagemagick (由于某些平台相关问题,我无法使用img2pdf)
Original 16M
Images 32M (Few kb images were deleted)
Final 33M

提取时图像大小加倍。假设发生了某种解压缩,为什么在制作PDF时不能将它们无损压缩回来?

编辑:

  1. 尝试-compress使用LZW,在 4 倍时间后生成 150M 文件。
  2. 试过了-page A4,没有变化。

命令:

$ pdfimages -all Scanneddoc.pdf ./a
$ rm a-001.jpg 
$ mogrify -rotate -90 a-*.jpg
$ convert a*.jpg Rotated.pdf

文件信息:
pdfimages -list input

page   num  type   width height color comp bpc  enc interp  object ID x-ppi y-ppi size ratio
--------------------------------------------------------------------------------------------
   1     0 image     260   260  rgb     3   8  jpeg   no         8  0   851   851 9.91K 5.0%
   1     1 image    3184  2020  rgb     3   8  jpeg   no        11  0   272   272  674K 3.6%
   2     2 image     260   260  rgb     3   8  jpeg   no        16  0   851   851 9.91K 5.0%
   2     3 image    2556  2968  rgb     3   8  jpeg   no        19  0   309   309  740K 3.3%
   3     4 image     260   260  rgb     3   8  jpeg   no        24  0   851   851 9.91K 5.0%
   3     5 image    2500  3052  rgb     3   8  jpeg   no        27  0   303   303  684K 3.1%
   4     6 image     260   260  rgb     3   8  jpeg   no        32  0   851   851 9.91K 5.0%
   4     7 image    2392  1372  rgb     3   8  jpeg   no        35  0   205   205  242K 2.5%
   5     8 image     260   260  rgb     3   8  jpeg   no        40  0   851   851 9.91K 5.0%
   5     9 image    2360  3148  rgb     3   8  jpeg   no        43  0   286   286  714K 3.3%

pdfimages -list output

page   num  type   width height color comp bpc  enc interp  object ID x-ppi y-ppi size ratio
--------------------------------------------------------------------------------------------
   1     0 image    2020  3184  rgb     3   8  jpeg   no         8  0   272   272  615K 3.3%
   2     1 image    2968  2556  rgb     3   8  jpeg   no        22  0   359   359 1741K 7.8%
   3     2 image    3052  2500  rgb     3   8  jpeg   no        36  0   369   370 1610K 7.2%
   4     3 image    1372  2392  rgb     3   8  jpeg   no        50  0   205   205  509K 5.3%
   5     4 image    3148  2360  rgb     3   8  jpeg   no        64  0   381   381 1493K 6.9%

澄清:解决方案和评论强调图像的旋转。需要明确的是,问题在于图像尺寸较大,因此不旋转也无济于事。虽然有损变换可能会妨碍有效压缩,导致尺寸过大,但问题确实出在提取部分。

pdf
  • 2 2 个回答
  • 95 Views

2 个回答

  • Voted
  1. K J
    2024-01-24T09:57:26+08:002024-01-24T09:57:26+08:00

    PDF 和 JPEG 经常一起使用。由于 JPEG 通常以其原始格式存储为整个组件插入。而 TIF、GIF、PNG 和任何其他像素化图像都会发生显着变化。

    因此,提取的 JPG 通常会以其源的不同密度插入,并且在没有 dpi 的情况下提取时,它将是字节完美的(100% 往返)。

    PDF 的优点之一是它忽略 EXIF 方向并以任何比例、任何角度旋转图像。因此,旋转页面不会以任何方式改变图像,提取的图像在插入和提取时将具有完全相同的哈希值。

    然而,图像无损旋转必须以不同的方式对 JPEG 图像内部产生附带损害。

    最小的损害是如果存在带有方向的 EXIF 块,则只需更改这些字节即可。但如果你想重新定位像素,它不可避免地会破坏一些东西。例如,一张图像通过不同的无损 JPEG 旋转器。

    source image A4 @ 200 dpi
    
    2339 x 1653  Pixels (3.87 MPixels) (1.41)
    29.7 x 21.0 cm; 11.69 x 8.27 inches
    JPEG, CMYK, quality: 59, subsampling ON (2x2)
    16,7 Million colours max (32 BitsPerPixel)
    40165 colours used
    502.58 KB (514,642 Bytes)
    
    ---------------------------
    JPG Transformation error: "Perfect" operation is not possible.
    Bad image dimensions (not multiples of 16)
    ---------------------------
    OK   
    ---------------------------
    Here are 3 different "lossless" application solutions
    
    Commercial (no names)
    undercrop MCU (1653 and cut -5)
    
    1648 x 2339  Pixels (3.85 MPixels) (0.70)
    20.9 x 29.7 cm; 8.24 x 11.69 inches
    JPEG, CMYK, quality: 59, subsampling ON (2x2)
    16,7 Million colours max (24 BitsPerPixel)
    40159 colours used
    450.43 KB (461,237 Bytes)
    
    IrfanView Graphics app
    overcrop MCU (1653 and pad +11)
    
    1664 x 2339  Pixels (3.89 MPixels) (0.71)
    21.1 x 29.7 cm; 8.32 x 11.69 inches
    JPEG, CMYK, quality: 59, subsampling ON (2x2)
    16,7 Million colours max (24 BitsPerPixel)
    40160 colours used
    452.28 KB (463,131 Bytes)
    
    Open Source Independent JPEG Group 
    jpegcrop (retain dimensions)
    
    1653 x 2339  Pixels (3.87 MPixels) (0.70)
    21.0 x 29.7 cm; 8.27 x 11.69 inches
    JPEG, CMYK, quality: 59, subsampling ON (2x2)
    16,7 Million   (24 BitsPerPixel)
    40159 colours used
    504.13 KB (516,231 Bytes)
    

    显然,最好的是经过最长时间开发的开源产品。然而,转换中颜色的数量减少了,但文件大小增加了最小量。

    因此,在 PDF 中往返 JPEG 进行旋转的正确方法是不更改图像,仅更改其 EXIF 或更简单地旋转 PDF 页面并在新文件中重复使用。

    因此,这里运行的是源 200 dpi JPEG 始终相同,没有任何字节更改,但横向扫描缩小了页面大小(A4 到 A5)并在保存为 PDF 之前旋转为纵向。

    在此输入图像描述

    如上所示,JPEG 由 pdfimages -all 提取并弹回其自然状态(200 dpi A4),然后我们可以重新插入到页面,它将完全相同。唯一的区别是 PDF 载体有一些额外的字节来描述新的布局。

    515426 已增加到 515482,甚至可以压缩到更小的几个字节,因为它是一个 CMD 文件,可以使用操作系统命令进行文本转换。 在此输入图像描述

    摘要 200 dpi 图像没有任何变化。报告的图像像素 PPI 密度因 SCALE 的不同而不同。两个图像都是直立的,两个页面都是直立的。

    它是在不同对象比例的页面内进行旋转的图像渲染。

    • 2
  2. Best Answer
    Abdullah Ibn Fulan
    2024-01-22T22:45:28+08:002024-01-22T22:45:28+08:00

    使用-j (write JPEG images as JPEG files)而不是-all (equivalent to -png -tiff -j -jp2 -jbig2 -ccitt)在 中产生合理的输出pdfimages。

    注意:任何寻找如何有效地就地旋转 pdf 页面/图像的人都可以在U&LSE中看到这个问题

    • 0

相关问题

  • Chrome 一直要求保存 PDF 并且从不打开它

  • 是否可以将保存为 PDF 文件的网页还原为网页?

  • CMYK 打印

  • 将双面扫描的 A3 pdf 裁剪并重新排列为 A4 格式

  • WebBrowser 刷新不会刷新 PDF 缩放级别

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何减少“vmmem”进程的消耗?

    • 11 个回答
  • Marko Smith

    从 Microsoft Stream 下载视频

    • 4 个回答
  • Marko Smith

    Google Chrome DevTools 无法解析 SourceMap:chrome-extension

    • 6 个回答
  • Marko Smith

    Windows 照片查看器因为内存不足而无法运行?

    • 5 个回答
  • Marko Smith

    支持结束后如何激活 WindowsXP?

    • 6 个回答
  • Marko Smith

    远程桌面间歇性冻结

    • 7 个回答
  • Marko Smith

    子网掩码 /32 是什么意思?

    • 6 个回答
  • Marko Smith

    鼠标指针在 Windows 中按下的箭头键上移动?

    • 1 个回答
  • Marko Smith

    VirtualBox 无法以 VERR_NEM_VM_CREATE_FAILED 启动

    • 8 个回答
  • Marko Smith

    应用程序不会出现在 MacBook 的摄像头和麦克风隐私设置中

    • 5 个回答
  • Martin Hope
    Vickel Firefox 不再允许粘贴到 WhatsApp 网页中? 2023-08-18 05:04:35 +0800 CST
  • Martin Hope
    Saaru Lindestøkke 为什么使用 Python 的 tar 库时 tar.xz 文件比 macOS tar 小 15 倍? 2021-03-14 09:37:48 +0800 CST
  • Martin Hope
    CiaranWelsh 如何减少“vmmem”进程的消耗? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Windows 10 搜索未加载,显示空白窗口 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    andre_ss6 远程桌面间歇性冻结 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney 为什么在 URL 后面加一个点会删除登录信息? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension 鼠标指针在 Windows 中按下的箭头键上移动? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca 我所有的 Firefox 附加组件突然被禁用了,我该如何重新启用它们? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK 是否可以使用文本创建二维码? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 更改 git init 默认分支名称 2019-04-01 06:16:56 +0800 CST

热门标签

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve