मैं Pillow, Django, और django-imagekit के साथ काम कर रहा हूं।किसी छवि को किसी विशिष्ट फ़ाइल आकार में परिवर्तित करने के लिए कैसे करें?
मैं एक प्रोफ़ाइल चित्र मॉडल फ़ील्ड (संभवतः ProcessedImageField
वर्ग छवि का उपयोग कर) में सक्षम होने के लिए देख रहा हूं, जो किसी भी छवि को ले जाएगा, जेपीईजी में परिवर्तित करेगा, इसे 150x150 तक फसल करेगा, और इसकी फ़ाइल आकार 5 केबी बना देगा।
पहले दो आसान कर रहे हैं:
profile_picture = imagekit.models.ProcessedImageField(upload_to=get_profile_picture_file_path,
format='JPEG',
processors=[ResizeToFill(height=150, width=150)]
)
लेकिन मैं कैसे सुनिश्चित कर सकते फ़ाइल आकार 5KB है? मैं पैरामीटर जैसे ProcessedImageField
में कुछ उपयोग कर सकता हूं, लेकिन ऐसा लगता है कि मूल फ़ाइल आकार (मेरे ज्ञान के लिए) के सापेक्ष ही लगता है।
समाधानों को django-imagekit का उपयोग करने की आवश्यकता नहीं है, लेकिन इसे प्राथमिकता दी जाएगी।
यह सत्यापित करता है कि फ़ाइल बहुत बड़ी है में एक अच्छी शुरुआत है, लेकिन 'do_something_further_image_processing_to_decrease_size' में तर्क वास्तव में सवाल के प्रासंगिक हिस्सा है। आप कैसे सुनिश्चित कर सकते हैं कि आप फ़ाइल आकार को किसी विशिष्ट आकार में कम कर रहे हैं, हर बार (विभिन्न संकल्पों/जेपीईजी गुणों की छवियों के साथ भी)? – dcgoss
मैं शायद यहां पुनरावृत्ति फ़ंक्शन जोड़ूंगा जो संकल्प को प्रत्येक पुनरावृत्ति के उत्पादित आकार के वर्तमान आकार से संबंधित 10% या अन्य कारक द्वारा कम करता है। 'पीआईएल' आपको ऐसी संभावना देता है। – Magnar