簡體   English   中英

在 Python 中調整 tiff 圖像的大小

[英]Resize tiff image in Python

嘗試使用以下方法調整圖像大小(權重 > 100 MB):

>>> from PIL import Image
>>> image = Image.open(path_to_the_file)
>>> new_image = image.resize((200, 200))

並收到 ValueError: tile cannot extend outside image。

原圖大小為

>>> image.size
>>> (4922, 3707)

我在做縮略圖、旋轉等時收到同樣的錯誤。

我做錯了什么?

編輯:使用 ImageMagic 檢查圖像:

$ identify file.tif
file.tif[0] TIFF 4922x3707 4922x3707+0+0 32-bit Grayscale Gray 31.23MB   0.000u 0:00.009
file.tif[1] TIFF 2461x1854 2461x1854+0+0 32-bit Grayscale Gray 31.23MB 0.000u 0:00.000
filetif[2] TIFF 1231x927 1231x927+0+0 32-bit Grayscale Gray 31.23MB 0.000u 0:00.000
file.tif[3] TIFF 616x464 616x464+0+0 32-bit Grayscale Gray 31.23MB 0.000u 0:00.000
file.tif[4] TIFF 308x232 308x232+0+0 32-bit Grayscale Gray 31.23MB 0.000u 0:00.000
file.tif[5] TIFF 154x116 154x116+0+0 32-bit Grayscale Gray 31.23MB 0.000u 0:00.000
identify: Unknown field with tag 33550 (0x830e) encountered. `TIFFReadDirectory' @ warning/tiff.c/TIFFWarnings/881.
identify: Unknown field with tag 33922 (0x8482) encountered. `TIFFReadDirectory' @ warning/tiff.c/TIFFWarnings/881.
identify: Unknown field with tag 34735 (0x87af) encountered. `TIFFReadDirectory' @ warning/tiff.c/TIFFWarnings/881.
identify: Unknown field with tag 34736 (0x87b0) encountered. `TIFFReadDirectory' @ warning/tiff.c/TIFFWarnings/881.

您應該安裝pytho-resize-image軟件包。

一個例子

from PIL import Image

from resizeimage import resizeimage


with open('acajeb-image.jpeg', 'r+b') as f:
    with Image.open(f) as image:
        cover = resizeimage.resize_cover(image, [200, 200])
        cover.save('test-image-cover.jpeg', image.format)

您可以使用安裝軟件包

pip install python-resize-image

嘗試添加Image.ANTIALIAS參數:

new_image = image.resize((200, 200), Image.ANTIALIAS)

這對我以前的項目之一很有效。

問題可能在這里,來自docs

注意,當前版本的PIL中的雙線性和雙三次濾波器不適用於較大的下采樣率(例如,創建縮略圖時) 除非速度比質量重要得多,否則您應該使用ANTIALIAS。

在這種情況下,請在您的代碼中添加Image.ANTIALIAS

from PIL import Image
image = Image.open(path_to_the_file)
new_image = image.resize((200, 200) Image.ANTIALIAS)

現在應該可以解決問題。

我像這樣使用ggdalwarp

gdal.Warp('output.tiff', 'input.tiff', xRes=0.5, yRes=0.5)

暫無
暫無

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

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