簡體   English   中英

圖像裁剪工具 (Python)

[英]Image Cropping Tool (Python)

我是一名電影攝影師,經常處理裁剪/圖像大小調整。 因為我拍攝膠片,我必須掃描我的底片並從批量掃描中裁剪每一幀。 我的掃描儀掃描四個條帶,每條六幅圖像(每次掃描 24 幀/裁剪)。

我的一個朋友給我寫了一個 Python 腳本,它根據輸入的坐標自動裁剪圖像。 該腳本運行良好,但導出圖像的文件格式存在問題。

從掃描來看,每幀都應該在 240 DPI 下產生一個 37mb 的 TIFF(當我在 Adob​​e Lightroom 中裁剪和導出時)。 相反,Cropper 輸出 13mb 72 DPI TIFF。

每當我運行 Cropper 時,終端(我在 Mac 上)都會警告我“減壓炸彈”。 我的朋友被難住了,建議我問 Stack Overflow。

我沒有 Python 經驗。 我可以提供他寫的代碼和終端給我的命令。

想法? 這將不勝感激,並且可以節省大量時間。 謝謝你!

ERROR MESSAGE: /Library/Python/2.7/site-packages/PIL/Image.py:2192: DecompressionBombWarning: Image size (208560540 pixels) exceeds limit of 89478485 pixels, could be decompression bomb DOS attack.

PIL 只是想保護您。 它不會打開較大的圖像,因為這可能是惡意用戶的攻擊媒介,可以為您提供會擴展以耗盡所有內存的大圖像。 引用PIL.Image.open()文檔

警告:為了防止“解壓炸彈”(即解壓成大量數據的惡意文件,旨在通過使用大量內存而崩潰或造成中斷)引起的潛在 DOS 攻擊,Pillow 將發出DecompressionBombWarning如果圖像超過一定限度。

由於您不是惡意用戶並且不接受來自其他任何人的圖像,您可以簡單地禁用限制:

from PIL import Image

Image.MAX_IMAGE_PIXELS = None

設置Image.MAX_IMAGE_PIXELS會完全禁用檢查。 您還可以將其設置為(高)整數值; 默認為1024 * 1024 * 1024 // 4 // 3 ,近 9000 萬像素或大約 250MB 的 3 通道圖像未壓縮數據。

請注意,對於高達 4.3.0 的 PIL 版本,默認情況下,發生的只是發出警告 您還可以禁用警告:

import warnings
from PIL import Image

warnings.simplefilter('ignore', Image.DecompressionBombWarning)

相反,如果您想完全阻止加載此類圖像,請將警告轉換為異常:

import warnings
from PIL import Image

warnings.simplefilter('error', Image.DecompressionBombWarning)

然后您可以期望Image.DecompressionBombWarning對象在您傳遞圖像時作為異常引發,否則將需要大量內存。

PIL v5.0.0 (2018 年 1 月發布)開始,使用兩倍MAX_IMAGE_PIXELS值的像素數的圖像將導致PIL.Image.DecompressionBombError異常。

請注意,這些檢查也適用於Image.crop()操作(您可以通過裁剪創建更大的圖像),如果您想從中受益,您需要使用 PIL 6.2.0 或更高版本(2019 年 10 月發布)使用 GIF 或 ICO 文件時的保護。

枕頭文檔

警告:為了防止“解壓炸彈”(即解壓成大量數據的惡意文件,旨在通過使用大量內存而崩潰或造成中斷)引起的潛在 DOS 攻擊,Pillow 將發出DecompressionBombWarning如果圖像超過一定限度。 如果需要,可以使用warnings.simplefilter('error', Image.DecompressionBombWarning)將警告轉換為錯誤,或使用warnings.simplefilter('ignore', Image.DecompressionBombWarning)完全抑制。 另請參閱日志記錄文檔以將警告輸出到日志記錄工具而不是 stderr。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM