2016-02-01 32 views
8

Tôi đã đọc và thử các ứng dụng hình thu nhỏ khác nhau cho Django. Đây là những yêu cầu:Django dễ dàng tạo hình thu nhỏ và sự khác biệt về hình thu nhỏ sorl

  • Tất cả các hình thu nhỏ được tạo ra phải được lưu trong một cái xô S3 tách biệt với hình ảnh ban đầu, tức là riêng biệt storage class

  • Khi dụ hình ảnh bị xóa, các tập tin hình ảnh ban đầu cùng với tất cả hình thu nhỏ được tạo cũng phải xóa cũng như

  • Giảm tối thiểu hiệu suất kém hiệu quả, ví dụ: Tìm nạp url của hình thu nhỏ để tuần tự hóa trong DRF không nên xem trong thùng S3 để xem liệu nó có tồn tại hay không, v.v.

VersatileImageField không thực hiện yêu cầu đầu tiên. ImageKit không đáp ứng yêu cầu thứ hai. Yêu cầu thứ ba là nơi tôi bối rối nhất; Tôi đang cố gắng để thông báo cho mình về các phương pháp hay nhất nhưng thông tin bị phân mảnh và tôi không tự tin đưa ra quyết định dựa trên những gì tôi đã học được từ trước đến nay.

Từ những gì tôi đã đọc, ấn tượng của tôi là hành vi hiệu quả nhất sẽ là như sau:

  • tạo hình thu nhỏ ngay khi tiết kiệm và cho rằng nó luôn tồn tại
  • để truy cập thumbnail, tạo ra URL dựa trên hình ảnh ban đầu của tên tập tin và hình thu nhỏ kích thước/chất lượng, vì chúng ta biết điều đó chắc chắn tồn tại
  • post_delete sẽ xóa tất cả hình thu nhỏ và tập tin gốc

Tôi muốn được quan tâm nhiều nhất đến việc tìm hiểu sự khác biệt trong cách tiếp cận mà hình thu nhỏ dễ dàng và hình thu nhỏ sorl chụp (nếu chúng phù hợp với quy trình tôi đã trình bày ngắn gọn ở trên hoặc nếu chúng có hiệu quả hơn) và lợi thế/bất lợi trong mỗi phương pháp luận của họ.

+0

Bạn giải quyết vấn đề của mình bằng cách nào? – wiesson

+0

@weisson Tôi đã thử cả ba ứng dụng này, tất cả đều không hoàn hảo và quá có ý kiến ​​(không có cách nào khác để đi về nó). Tôi đang sử dụng hình thu nhỏ phía máy khách với pica.js. Các hình ảnh blob được tải lên trực tiếp đến S3, không có ImageField hoặc gối cần thiết. – dtgq

Trả lời

0

Tôi không chắc liệu điều này có hữu ích hay không, nhưng tôi đã sử dụng hình thu nhỏ dễ dàng trong quá khứ và tôi khá chắc chắn rằng tất cả những thứ bạn đang yêu cầu nếu bạn định cấu hình một chút . Cấu hình nó với chức năng tiết kiệm là một chút khó khăn, như các chức năng tiết kiệm không quan tâm để được cấu hình, nhưng nó không phải là không thể. Điều chính có thể gây ra sự cố là bạn phải sử dụng 'lưu và tiếp tục chỉnh sửa' để truy cập và sử dụng tùy chọn hình thu nhỏ. Nó sẽ không được hiển thị cho đến khi bạn làm như vậy nếu bạn chưa tạo nó kể từ khi nó được tạo ra khi lưu.

def save() 
    found_id = self.id 
     super(Team, self).save(*args, **kwargs) 
     if self.image and found_id is None and self.original_image_width and self.original_image_height: 
      self.image = get_thumbnailer(self.image).get_thumbnail({ 
       'size': (self.original_image_width, self.original_image_height) 
      }).name 
     super(Team, self).save(*args, **kwargs) 
+0

Bạn có thể vui lòng cung cấp đoạn mã ví dụ về cách bạn định cấu hình chức năng lưu và cách bạn sử dụng 'lưu và tiếp tục chỉnh sửa' không? Cảm ơn. – dtgq

+0

Về cơ bản, điều gì sẽ xảy ra với 'Lưu và tiếp tục chỉnh sửa' là chức năng lưu sẽ tạo ra các url easy_thumbnails Về cơ bản, bạn sẽ tạo các tùy chọn cho chiều rộng và chiều cao của ảnh gốc, cũng như cho hình thu nhỏ và trình tải lên hình ảnh để lưu hình thu nhỏ trong mô hình – overstreetce

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