日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

R pdf大小_免费的pdf压缩大法

發(fā)布時間:2023/12/20 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 R pdf大小_免费的pdf压缩大法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

歡迎關注我們~

今天突然需要壓縮pdf,網(wǎng)上都要收錢賊坑,于是乎決定一切的一切都要靠自己,給自己省幾塊錢的壓縮費吧: )

基本思路就是,把pdf拆成jpg圖片然后用SVD壓縮圖片,再拼接成PDF。

這次用的pdf是這個

import globimport fitzimport os pdffile = "123.pdf"doc = fitz.open(pdffile)width, height = fitz.PaperSize("a4") totaling = doc.pageCountfor pg in range(totaling): page = doc[pg] zoom = int(150) rotate = int(0) print(page) trans = fitz.Matrix(zoom / 100.0, zoom / 100.0).preRotate(rotate) pm = page.getPixmap(matrix=trans, alpha=False) lurl='pdf{}.jpg'.format(str((pg+1)/10)) pm.writePNG(lurl)doc.close()

這一步就把pdf拆成圖片了

然后用SVD批量壓縮圖片(這里有點慢···)

from PIL import Image import numpy as np def?rebuild_img(u,?sigma,?v,?p):#p表示奇異值的百分比? m = len(u) n = len(v) ????a?=?np.zeros((m,?n))? count = (int)(sum(sigma)) curSum = 0 ????k?=?0???? while curSum <= count * p: uk = u[:, k].reshape(m, 1)????????vk?=?v[k].reshape(1,?n)? a += sigma[k] * np.dot(uk, vk) curSum += sigma[k] ????????k?+=?1 a[a < 0] = 0 ????a[a?>?255]?=?255????return?np.rint(a).astype("uint8")?PATH = []for i in range(58):????PATH.append(Image.open("pdf"+str((i+1)/10)+".jpg"))for i in range(len(PATH)):????a?=?np.array(PATH[i]) p=1 u, sigma, v = np.linalg.svd(a[:, :, 0]) R = rebuild_img(u, sigma, v, p) u, sigma, v = np.linalg.svd(a[:, :, 1]) G = rebuild_img(u, sigma, v, p) u, sigma, v = np.linalg.svd(a[:, :, 2]) B = rebuild_img(u, sigma, v, p) I = np.stack((R, G, B), 2)????#?建個新的文件夾,路徑要改????path = 'C:/Users/yzzpp/Desktop/python 1/練手/lian/out/' Image.fromarray(I).save(path+"pdf"+str((i+1)/10) + ".jpg

然后是這樣的:

這些是壓縮過的圖片

然后把這些圖片集合成pdf:

import globimport fitzimport osdef pictopdf(): doc = fitz.open() for img in glob.glob('*.jpg'): print(img) imgdoc = fitz.open(img) pdfbytes = imgdoc.convertToPDF() imgpdf = fitz.open("pdf", pdfbytes) doc.insertPDF(imgpdf) if os.path.exists("newpdf.pdf"): os.remove("newpdf.pdf") doc.save("newpdf.pdf") doc.close()pictopdf()

對比下壓縮前后的圖片大小和效果:

壓縮前:

壓縮后:

最后總大小對比:

因為本身這份123.pdf就在網(wǎng)上壓縮過,所以效果就沒那么明顯了。

OK 給自己省了幾塊錢,舒服。

END

Miya

小小分享,期待更多

歡迎諸位討論&指正

總結

以上是生活随笔為你收集整理的R pdf大小_免费的pdf压缩大法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。