2011-12-13 15 views
10

मुझे छवि डेटा वापस करने के लिए एक दृश्य चाहिए। इसलिएdjango: एक दृश्य से छवि डेटा वापस

return HttpResponse(image_data, mimetype=”image/png”) 

मुझे पता है की तर्ज पर कुछ मैं एक file.read() कर सकते हैं छवि डेटा प्राप्त करने के लिए, लेकिन क्योंकि छवि छोटे (1x1 पिक्सल की तरह) है मैं सिर्फ एक स्ट्रिंग वस्तु के रूप में यह संग्रहीत करना चाहते हैं (या जो भी ऑब्जेक्ट मैं अपने कोड में कॉपी और पेस्ट कर सकता हूं)। इस तरह, जब भी दृश्य हिट होता है तो मैं खुद को डिस्क लुकअप बचाता हूं।

मैं इस बारे में कैसे जा सकता हूं? मुझे यकीन है कि यह आसान है, मुझे यकीन नहीं है कि खोज के लिए किस शब्द का उपयोग करना है।

पेज। मुझे पता है कि कोई आम तौर पर Django के साथ इस तरह से छवियों की सेवा नहीं करता है।

उत्तर

11

यहाँ, आप प्रदर्शन के साथ संबंध रहे हैं django-openid project

def logo(request): 
    return HttpResponse(
     OPENID_LOGO_BASE_64.decode('base64'), content_type='image/gif' 
    ) 
    # Logo from http://openid.net/login-bg.gif 
    # Embedded here for convenience; you should serve this as a static file 
    OPENID_LOGO_BASE_64 = """ 
    R0lGODlhEAAQAMQAAO3t7eHh4srKyvz8/P5pDP9rENLS0v/28P/17tXV1dHEvPDw8M3Nzfn5+d3d 
    3f5jA97Syvnv6MfLzcfHx/1mCPx4Kc/S1Pf189C+tP+xgv/k1N3OxfHy9NLV1/39/f///yH5BAAA 
    AAAALAAAAAAQABAAAAVq4CeOZGme6KhlSDoexdO6H0IUR+otwUYRkMDCUwIYJhLFTyGZJACAwQcg 
    EAQ4kVuEE2AIGAOPQQAQwXCfS8KQGAwMjIYIUSi03B7iJ+AcnmclHg4TAh0QDzIpCw4WGBUZeikD 
    Fzk0lpcjIQA7 
    """ 
+0

से एक सरल उदाहरण है आप भी Base64 स्ट्रिंग डिकोड कर सकता है एक बार जब आप हर बार यह अनुरोध किया है के बजाय मॉड्यूल लोड: 'OPENID_LOGO = OPENID_LOG_BASE64 .decode ('बेस 64') ' – dkamins

1

आप base64 का उपयोग करने पर विचार कर सकते हैं। लेकिन आप पाते हैं कि प्रदर्शन बूस्ट लगभग अप्रासंगिक है क्योंकि आपकी छवि डिस्क कैश में संग्रहीत की जाएगी। मैं बेस 64 डीकोडिंग बनाम डिस्क एक्सेस के बेंचमार्क देखना चाहता हूं। आप यह भी पा सकते हैं कि इस अनुकूलन का विपरीत प्रभाव होगा।

संपादित करें: मुझे यह page on the linux disk cache मिला है जो आप इस निर्णय के दौरान दिलचस्प पढ़ सकते हैं। जब तक आपकी डिस्क गतिविधि बहुत अधिक न हो, तब तक डिस्क कैश का हिस्सा होने वाली इस छोटी छवि की संभावनाएं दिखाई देती हैं।

संबंधित मुद्दे