2010-07-30 44 views
5

Tôi đang viết một ứng dụng đơn giản bằng Python hiển thị hình ảnh. Tôi cần triển khai Phóng to và thu nhỏ bằng cách phóng to hình ảnh.
Tôi nghĩ rằng Image.transform phương pháp sẽ có thể làm được điều này, nhưng tôi không chắc chắn làm thế nào để sử dụng nó, vì nó đòi hỏi một affine ma trận hoặc một cái gì đó như thế: P
Dưới đây là đoạn trích từ các tài liệu:Phóng to Thư viện ảnh Python

im.transform (kích thước, affine, dữ liệu, bộ lọc) => hình ảnh

Áp dụng một affine chuyển đến hình ảnh, và đặt kết quả trong một hình ảnh mới với kích thước nhất định.

Dữ liệu là 6-tuple (a, b, c, d, e, f) chứa hai hàng đầu tiên từ ma trận biến đổi affine. Đối với mỗi pixel (x, y) trong hình ảnh đầu ra, giá trị mới được lấy từ một vị trí (a x + b y + c, d x + e y + f) trong hình ảnh đầu vào, được làm tròn tới pixel gần nhất.

Chức năng này có thể được sử dụng để mở rộng, dịch, xoay và cắt hình ảnh gốc.

Trả lời

5

Bạn nên sử dụng phương pháp EXTENT thay vì phương pháp AFFINE. Bạn chỉ cần tính hai thứ: phần nào của dữ liệu đầu vào bạn muốn xem và dung lượng của nó là bao nhiêu. Ví dụ: nếu bạn muốn xem toàn bộ hình ảnh được thu nhỏ xuống một nửa kích thước (tức là thu nhỏ bằng 2), bạn sẽ chuyển dữ liệu (0, 0, im.size [0], im.size [1]) và kích thước (im.size [0]/2, im.size [1]/2).

+0

Cảm ơn thông tin, nó làm việc rất lớn :) –

0

Chuyển đổi affine áp dụng và chuyển đổi tuyến tính theo sau là bản dịch. Nhưng bạn chỉ cần thay đổi kích thước một phần của hình ảnh bằng cách sử dụng phương pháp thay đổi kích thước. Có một số mẫu mã trong sau SO trả lời:

+0

Cảm ơn, tôi đang sử dụng trong phạm vi một, nhưng ví dụ đó là rất hữu ích:) –

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