本文目錄一覽:
怎樣利用python將pdf轉換成jpg格式
可以用第三方庫wand實現(我的環境:win10、python3)
需要安裝wand 、imagemagick和ghostscript
wand的安裝很簡單:直接cmd 運行pip install wand
然後安裝imagemagick ,從這裡下載網頁鏈接,注意是32位還是64位,這個需要和python的位數一致。
安裝過程注意勾選Install development headers and libraries for C and C++ 。安裝後設置MAGICK_HOME環境變數,值為imagemagick的安裝路徑,並將安裝路徑加入path。
詳情可參照此頁面網頁鏈接。
最後安裝ghostscript,這裡下載網頁鏈接,選擇AGPL release,注意32位還是64位。
安裝過程很簡單,一路點擊next,如果不想安裝在c盤,可以改變安裝路徑,這個沒有影響。
最後上代碼(很簡單):
#-*- coding:utf-8 -*-
from wand.image import Image
with Image(filename=”pdf_file_name”,resolution=300) as img:
img.format = ‘jpeg’
img.save(filename=’converted.jpg’)
上面的pdf_file_name輸入要處理的pdf文件名,最後會在當前目錄下生成converted.jpg
說明:這幾行代碼比較簡單,處理頁數較少的pdf還行,頁數太多會卡住。但是可以用pyPDF2分割pdf然後轉換,這是一種思路,關於pyPDF2的教程自行百度吧。
python判斷圖像是不是gif
用擴展名判斷文件格式非常簡單,但是有可能是錯誤的。 jpeg文件有固定的文件頭,其文件頭的格式如下:
Start Marker | JFIF Marker | Header Length | Identifier0xff, 0xd8 | 0xff, 0xe0 | 2-bytes | “JFIF\0”
所以我們可以通過文件頭的方式快速判斷文件格式:
def is_jpg(filename):
data = open(filename,’rb’).read(11)
if data[:4] != ‘\xff\xd8\xff\xe0’: return False
if data[6:] != ‘JFIF\0’: return False
return True
上面的方式通過文件的前x個位元組對文件格式做了判斷,如果我們的要求更高,可以通過PIL類庫來做判斷。
from PIL import Imagedef is_jpg(filename):
try:
i=Image.open(filename)
return i.format ==’JPEG’
except IOError:
return False
Python中的文件讀寫-理論知識
Python處理兩種不同類型的文件:二進位文件和文本文件。了解兩者之間的差異很重要,因為它們的處理方式不同。
二進位文件
在正常計算機使用期間使用的大多數文件實際上是二進位文件,而不是文本。比如:Microsoft Word .doc文件實際上是一個二進位文件,即使它只有文本。
二進位文件的其他示例包括:
圖像文件,包括.jpg,.png,.bmp,.gif,等。
資料庫文件包括.mdb,.frm和.sqlite
文件,包括.doc,.xls,.pdf或者其他文件。
那是因為這些文件都有特殊處理的要求,需要特定類型的軟體來打開它。例如,您需要Excel來打開.xls文件,並使用資料庫程序來打開.sqlite文件。
文本文件
一方面,沒有特定的編碼,可以通過沒有任何特殊處理的標準文本編輯器打開。但是,每個文本文件都必須遵守一組規則:
文本文件必須是可讀的。他們可以(並且經常會)包含許多特殊編碼,尤其是在HTML或其他標記語言中,但您仍然可以說出它的含義
文本文件中的數據按行組織。在大多數情況下,每一行都是一個獨特的元素,無論是指令行還是命令。
此外,文本文件在每行的末尾都有一個看不見的字元,這使文本編輯器知道應該有一個新行。通過編程與這些文件交互時,您可以利用該字元。在Python中,它用「 n」 表示。
在哪裡可以找到Python的文件I / O工具
在Python中工作時,您不必擔心導入任何特定的外部庫來處理文件。Python附帶有「文件庫」,文件I / O工具和實用程序是核心語言的內置部分。
但是在其他語言(如C ++)中,要處理文件,您必須通過包含正確的頭文件來啟用文件I / O工具#include fstream。如果您使用Java編寫代碼,則需要使用該import java.io.*語句。
使用Python,就沒有必要這樣做,這是因為Python有一組內置函數,可以處理讀取和寫入文件所需的所有內容。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/198625.html