2011-01-07 26 views
9

Cụ thể hơn, tôi muốn thay đổi loại tệp hình ảnh được tải lên thông qua một Django ImageField.Làm cách nào để tạo hình ảnh PIL từ tệp trong bộ nhớ?

Suy nghĩ hiện tại của tôi là tạo một ImageField tùy chỉnh và ghi đè phương thức lưu để thao tác tệp.

Tôi gặp sự cố khi tải tệp bộ nhớ vào vì bản sao Hình ảnh PIL.

Cảm ơn sự giúp đỡ.

Trả lời

11

Lưu ý rằng Django ImageField kế thừa phương pháp open từ FieldFile. Này trả về một đối tượng dòng có thể được truyền cho Image.open PIL của (phương pháp nhà máy tiêu chuẩn cho việc tạo Image đối tượng từ một dòng hình ảnh):

stream = imagefield.open() 
image = Image.open(stream) 
stream.close() 
# ... and then save image with: image.save(outfile, format, options) 

Xem PIL Image documentation.

+1

Chỉ cần nhận ra điều đó. Cảm ơn. – Zach

+0

'stream.close()' sẽ kết xuất tham chiếu đến tệp? Nếu tôi muốn làm 'stream.thumbnail (200x200, 'png')' tôi nên quản lý 'stream.close()' như thế nào? – tutuca

+1

lợi nhuận mở 'Không có' tại đây http://dpaste.de/HqFCF/ ... – tutuca

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