2010-12-07 34 views
9

Tôi đang cố gắng sử dụng một tập lệnh python có tên là deepzoom.py để chuyển đổi các nút hiển thị trên cao (thường trên 1GP) sang định dạng hình ảnh Phóng lớn (tức là định dạng bản đồ google-esque), nhưng tiếc là nó được hỗ trợ bởi PIL, thường kết thúc do lỗi do giới hạn bộ nhớ. Người sáng tạo đã nói rằng anh ấy đang đào sâu vào VIPS, nhưng thậm chí nip2 (giao diện GUI cho VIPS) không mở được hình ảnh. Trong câu hỏi khác của người khác (mặc dù cùng chủ đề), ai đó đã đề xuất OpenImageIO, có vẻ như nó có khả năng và có trình bao bọc Python, nhưng không có bất kỳ tệp nhị phân nào được cung cấp và cố biên dịch nó trên Windows là cơn ác mộng.Xử lý hình ảnh khổng lồ (có thể trên 30000x30000) bằng Python?

Có bất kỳ thư viện thay thế nào cho Python tôi có thể sử dụng không? Tôi đã thử PythonMagickWand (trình bao bọc cho ImageMagick) và PythonMagick (trình bao bọc cho GraphicsMagick), nhưng cả hai đều chạy trong các vấn đề về bộ nhớ.

+0

Điều gì khiến bạn không thể sử dụng Linux cho OpenImageIO? Nhận một ổ đĩa cứng nhỏ bên ngoài và cài đặt nó lên (hoặc một ổ đĩa nội bộ không sử dụng). Tôi cũng tin tưởng thông số kỹ thuật hệ thống của bạn là tùy thuộc vào nhiệm vụ. Bạn có thể thử tách nó thành hình ảnh nhỏ hơn và chuyển đổi những hình ảnh đó cũng như –

+0

Tôi đã thử trước đó, với kết quả không thành công, mặc dù tôi đã không thực hiện nhiều để thiết lập chính xác. Có lẽ điều này nghe có vẻ vô lý, nhưng tôi cho rằng nó sẽ không tương thích nếu tôi cố chạy kịch bản trên Windows. – Nicolas

Trả lời

1

Có vẻ như bạn đang cố gắng sử dụng hình ảnh được tham chiếu địa lý hoặc một cái gì đó tương tự, mà giải pháp GIS thích hợp hơn. Tôi muốn sử dụng GDAL - đó là một thư viện tuyệt vời và đi kèm với các ràng buộc Python dễ sử dụng thông qua Swig.

Trên Windows, cách dễ nhất để cài đặt nó là qua gói FWTools của Frank Warmerdam.

+0

Điều đó thật hoàn hảo. Thậm chí có vẻ như kết hợp các công cụ tạo kim tự tháp, cũng là một điểm cộng. Chúc mừng! – Nicolas

+0

Hmm, rõ ràng là không. GDAL dựa trên libjpeg, trả về 'Không đủ bộ nhớ' khi cố mở hình ảnh. Có lẽ tôi cần phải (bằng cách nào đó) chuyển đổi nó thành một định dạng thô trước khi tôi có thể làm bất cứ điều gì với nó. Tôi sẽ cố gắng biên dịch trên một máy ảo Linux và xem nó như thế nào. – Nicolas

+0

@Nicolas: Hmm ... Tôi biết rằng GDAL có khả năng làm việc với hình ảnh quá lớn để vừa với bộ nhớ. Tôi đã không sử dụng trình điều khiển JPEG rộng rãi, vì vậy tôi không thể bình luận về nó, nhưng tôi hy vọng bạn sẽ có thành công tốt hơn với một định dạng thô. –

0

Tải một phần có hữu ích không? Nếu bạn sử dụng PIL và định dạng hình ảnh là .BMP: bạn có thể mở() một tệp hình ảnh (không tải nó), sau đó thực hiện một crop() và sau đó tải - sẽ chỉ thực sự tải một phần của hình ảnh mà bạn đã chọn theo mùa vụ. Có lẽ cũng sẽ làm việc với TGA, thậm chí có thể cho JPG và ít hiệu quả hơn cho PNG và các định dạng khác.

2

Tôi gặp vấn đề tương tự và tôi đã giải quyết nó bằng cách sử dụng netpbm, hoạt động tốt trên các cửa sổ. Netpbm không có vấn đề gì với việc chuyển đổi các tệp .png khổng lồ và sau đó cắt, cắt xén, kết hợp lại (sử dụng pamcrop, pamdice và pamundice) và chuyển đổi về .png mà không cần sử dụng nhiều bộ nhớ. Tôi chỉ bao gồm các tập tin nhị phân netpbm cần thiết và dlls với ứng dụng của tôi và gọi chúng từ python.

1

Các libvips mới nhất, 7,32, đi kèm với trình tạo DeepZoom rất nhanh có thể hoạt động với hình ảnh có kích thước bất kỳ. Hãy thử:

$ vips dzsave huge.tif mydz 

sẽ viết vào gạch để mydz_files và cũng viết một tập tin mydz.dzi thông tin cho bạn.

Xem this blog post để được giới thiệu về dzsave.

Các vấn đề liên quan