2011-02-14 10 views
6

पूर्व शोध के माध्यम से, मैंने पाया है कि किसी छवि पर मेटाडेटा गुण सेट करना बहुत कठिन नहीं है। उदाहरण के लिए, मैं एक बिटमैप ऑब्जेक्ट में एक जेपीईजी छवि पढ़ सकता हूं और छवि की SetPropertyItem विधि के माध्यम से अपनी "मूलभूत" तिथि बदल सकता हूं (मैंने पहले से ही प्रारूप और गणना करने के लिए भी शोध किया है)।जेपीईजी मेटाडाटा सेट करें - कार्यान्वयन की समस्याएं

हालांकि, हालांकि वास्तविक मेटाडाटा हिस्सा आसान लगता है, मैं परेशान कार्यान्वयन मुद्दों के एक जोड़े के साथ सामना कर रहा हूँ:)

1 जब मैं बिटमैप पर सहेजें() कहते हैं, ऐसा प्रतीत नहीं होता कि छवियों के मूल एन्कोडिंग सेटिंग्स का उपयोग किया जाता है। नतीजतन, संपीड़न स्तर बदलता है (संभवतः कुछ डिफ़ॉल्ट मान के लिए); मैं अपने सेव() कॉल के बाद फ़ाइल आकार को काफी कम कर सकता हूं। मुझे पता है कि आप सहेजें() को कॉल के भीतर किसी छवि के लिए एन्कोडिंग सेटिंग्स को कस्टमाइज़ कर सकते हैं, लेकिन ईमानदारी से, मैं केवल तस्वीर के मेटाडेटा को बदलना चाहता हूं; क्या इसकी मूल एन्कोडिंग सेटिंग्स का उपयोग करके छवि को सहेजने का कोई आसान तरीका नहीं है? यहां तक ​​कि अगर मैं सहेजें() कॉल में छवि की मौजूदा एन्कोडिंग सेटिंग्स का सीधे संदर्भ दे सकता हूं, तो इससे मदद मिलेगी।

2) जाहिर है, मूल फ़ाइल लॉक हो जाती है जब आप इसे बिटमैप ऑब्जेक्ट में पढ़ते हैं। नतीजतन, मैं छवि को अपने मूल फ़ाइल नाम के नीचे बहुत गड़बड़ किए बिना सहेज नहीं सकता: वर्तमान में, मैं उस छवि को चित्रित कर रहा हूं जिसे मैंने फ़ाइल से ऑफस्क्रीन बिटमैप पर पढ़ा है, मूल छवि का निपटान कर रहा है, और फिर सहेज रहा है ऑफस्क्रीन बिटमैप। दोबारा, यह एक बहुत ही अतिरिक्त काम की तरह लगता है जब मैं बस एक छवि फ़ाइल में मेटाडेटा अद्यतन करना चाहता हूं।

आपके द्वारा ऑफ़र किए जाने वाले किसी भी सुझाव की सराहना की जाएगी ... जेपीईजी फ़ाइल के मेटा डेटा को अपडेट करने के लिए मुझे जो काम करना है, उनमें से अधिकांश (वास्तविक जिनमें से मेटाडाटा परिवर्तन से कोई लेना देना नहीं है) मुझे ले जाता है यह सोचने के लिए कि क्या मुझे ऐसा करने के कुछ आसान या बेहतर तरीके याद आ रहे हैं।

+1

जेपीईजी एक ** हानिपूर्ण ** प्रारूप है, और हर बार जब आप आप जानकारी भले ही उन्हीं सेटिंग का उपयोग खो देंगे सहेजें। इसके आस-पास एकमात्र तरीका एक लाइब्रेरी का उपयोग करना है जो छवि को डिकंप्रेस नहीं करता है। –

उत्तर

1

आप जो करना चाहते हैं वह EXIF ​​डेटा संपादित करना है। अब आप छवि को फिर से दबा रहे हैं, और यह गुणवत्ता हानि का कारण बन जाएगा, जैसा आपने देखा है।

संपादन EXIF ​​के लिए इस कोड को नमूना देखें: http://www.dreamincode.net/code/snippet3144.htm

+0

मैंने एक छवि पर exif टैग 36867, 306 और 36868 को अद्यतन करने के लिए उस कोड नमूने का उपयोग किया, और सत्यापित किया कि टैग वास्तव में सेट किए गए थे। फिर भी, जब मैं अपने माउस को विंडोज एक्सप्लोरर में सहेजी गई छवि पर घुमाता हूं, तो टूलटिप अभी भी कहता है कि यह उन तीन टैग्स में सेट किए गए नए की बजाय पुरानी तारीख में लिया गया था। क्या मुझे कुछ और याद आ रहा है? साथ ही, फ़ाइल का आकार मूल से अभी भी अलग है; क्या किसी जेपीईजी के अंदर पहुंचने और पूरी चीज को सहेजे बिना कुछ मेटाडेटा बदलने का कोई तरीका नहीं है? –

+0

फ़ाइल का आकार कितना अलग है? हाँ, यह काम करना चाहिए, और केवल EXIF ​​डेटा संपादित करें। हममम। इसके अलावा, विंडोज एक्सप्लोरर thumbs.db में जानकारी कैश कर सकता है, लेकिन मुझे यकीन नहीं है। – Brad

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