GDAL (với ràng buộc Python) cung cấp một số trình điều khiển rất tốt cho việc này. Mặc dù nó là một gói không gian địa lý, nó hoạt động tốt với BMP và PNG chẳng hạn. Ví dụ này cho thấy cách tải hàng PNG theo hàng:
import gdal
# only loads the dataset
ds = gdal.Open('D:\\my_large_image.png')
# read 1 row at the time
for row in range(ds.RasterYSize):
row_data = ds.ReadAsArray(0,row,ds.RasterXSize,1)
ds = None # this closes the file
Nó mang lại cho bạn một mảng kết quả, sẵn sàng cho việc xử lý. Bạn có thể viết bất kỳ kết quả nào theo cách tương tự.
print type(row_data)
<type 'numpy.ndarray'>
print row_data.shape
(3, 1, 763)
print row_data
[[[ 0 0 255 ..., 230 230 0]]
[[ 0 0 252 ..., 232 233 0]]
[[ 0 0 252 ..., 232 233 0]]]
Cài đặt gói dành riêng cho việc đọc có thể hơi quá mức nếu PIL hoặc một thứ khác có thể thực hiện. Nhưng nó là một lựa chọn mạnh mẽ, tôi đã xử lý hình ảnh của 30000 * 30000 pixel như thế này.
Nguồn
2013-02-16 16:40:56
Trong nhiều trường hợp, có, nhưng nó phụ thuộc vào định dạng của hình ảnh và thư viện bạn đang sử dụng để đọc nó. Định dạng của bạn là gì? –
Tôi đang sử dụng định dạng tệp .PNG. – nickponline
TIFF sẽ làm cho nó đặc biệt dễ dàng, nhưng tôi không nghĩ rằng PIL hỗ trợ đọc TIFFs bởi các ban nhạc. – Jaime