PNG फ़ाइल का DPI कैसे बदलें? (कमांड लाइन में, बिना ImageMagick के)


9

मैं PNG छवि फ़ाइलों पर DPI को बदलने का तरीका ढूंढ रहा हूं। ImageMagick का उपयोग करना यह आसान है:

$ convert -density 150 -units pixelsperinch file.png file.png

समस्या यह है कि मैं इस एप्लिकेशन को अपने एप्लिकेशन से चलाऊंगा, जो कई VMs पर चल रहा है, जिसमें ImageMagick इंस्टॉल नहीं है। मैं इन VMs में अपग्रेड पैकेज को आगे बढ़ा सकता हूं, लेकिन ImageMagick के मामले में अपग्रेड बंडल के बारे में 30MB जोड़ देगा, जो मेरे उपयोग के मामले के लिए बहुत अधिक है।

लंबी कहानी छोटी : एक तरीका है कि मैं एक छोटी सी (पैकेज के आकार में) कमांड लाइन टूल का उपयोग करके PNG फ़ाइल पर DPI को बदल सकता हूं?

वैकल्पिक रूप से, एक कच्ची छवि फ़ाइल में बाइट्स बदलना भी ठीक होगा, अगर कोई जानता है कि उन्हें कहां देखना है ...


आप अपने स्वयं के कार्यान्वयन पर विचार कर सकते हैं। PNG विखंडू में हेरफेर सीधा-आगे पर्याप्त है। यदि आप केवल उन सभी के लिए एक विशेष DPI लागू करने का इरादा रखते हैं, तो आपको एक कार्यशील चेकसम फ़ंक्शन करने की भी आवश्यकता नहीं है - बस pHYsफ़ोटोशॉप में बने PNG से पूर्व-निर्मित चंक की प्रतिलिपि बनाएँ ।
ज़ेडनेक

जवाबों:


6

क्या 2.10 एमबी काफी छोटा है? यदि हाँ, NConvert और बैच कमांड का उपयोग करें जैसे:

nconvert -out png -dpi 150 -keepdocsize -keepfiledate mysource.png

NConvert क्या है?

XnView एक GUI- आधारित अनुप्रयोग है, आप चित्रमय उपयोगकर्ता इंटरफ़ेस का उपयोग करके छवियों को बदल सकते हैं और उनमें हेरफेर कर सकते हैं। NConvert में XnView जैसी ही क्षमताएं हैं, लेकिन यह एक कमांड लाइन टूल है और इसमें कोई ग्राफ़िकल यूज़र इंटरफ़ेस नहीं है। आप NCONvert का उपयोग बैच स्क्रिप्ट में कर सकते हैं या कोई अन्य एप्लिकेशन इसे कॉल कर सकता है।

सहायक लिंक्स

  • शुरुआत करने के लिए कुछ उदाहरणों के साथ शुरुआती गाइड और विकी
  • कमांड लाइन पैरामीटर उपलब्ध हैं, यह देखने के लिए फ़ाइल की मदद करें (pastebin पर अपलोड)
  • एक ग्राफिक सामने के अंत Nconvert उपयोग कर रहा है XnConvert । Nconvert बैच फ़ाइलों को बनाने और निर्यात करने के लिए इसका उपयोग करें
  • के लिए Xnconvert और Nconvert के लिए फोरम

धन्यवाद, बहुत अच्छा लग रहा है और शायद भविष्य में काम आएगा! इस मामले में मैंने पीएनजी प्रारूप का अध्ययन किया (जो सौभाग्य से काफी सरल था) और एक छोटे से कस्टम ऐप (PHP में 15 लाइनें) के माध्यम से छवियों को बदल रहा है।
जॉन्डोडो

@johndodo यह दिलचस्प लगता है। क्या आप अपना आवेदन हमारे साथ साझा करना चाहते हैं?
nixda

दुर्भाग्य से मैं ऐसा करने के लिए स्वतंत्र नहीं हूं, लेकिन आप पीएनजी फ़ाइल प्रारूप के एक (महान!) विनिर्देशन को पढ़कर और पीएचवाई चंक को बदलने वाले ऐप बनाकर भी ऐसा कर सकते हैं । एक बार जब आप जानते हैं कि आप क्या कर रहे हैं तो यह वास्तव में सरल है।
जॉन्डोडो

1

आपने उल्लेख किया है कि आप इस कमांड को "अपने एप्लिकेशन से" चला रहे होंगे, और यह मुझे विश्वास दिलाता है कि आपने इस एप्लिकेशन को लिखा है, या इसे बनाए रख रहे हैं। उस ने कहा, कई भाषाओं के लिए इमेजमैजिक एपीआई है , और आप उनमें से एक का उपयोग अपने मौजूदा कार्यक्रम में कार्यक्षमता को जोड़ने के लिए कर सकते हैं। पैकेज के आकार में वृद्धि इस बात पर निर्भर करेगी कि आपका आवेदन किस भाषा में लिखा गया है और क्या आप लाइब्रेरी को सांख्यिकीय या गतिशील रूप से लिंक करते हैं, लेकिन मुझे लगता है कि यह 30 एमबी की वृद्धि से काफी छोटा होगा।

एक और विकल्प पूरे ImageMagick पैकेज को शामिल नहीं करना है। आप ImageMagick ज़िप फ़ाइल डाउनलोड कर सकते हैं (जो कि केवल 13 MB BTW है), और सिर्फ convertटूल निकालें और यह निर्भरता है और इसे अपने VM में वितरित करें। डिपेंडेंसी वॉकर नामक एक उपकरण है जिसका उपयोग आप यह निर्धारित करने के लिए कर सकते हैं कि convertउपकरण की निर्भरताएं क्या हैं।


1

का प्रयोग करें -sizeमें झंडा netpbm pnmtopng कार्यक्रम। उपयोग की जाने वाली इकाइयाँ प्रति मीटर पिक्सेल हैं। निम्नलिखित उदाहरण newdile.png को 300dpi पर सेट करेगा।

pngtopnm <oldfile.png | pnmtopng -size='11811 11811 1' >newfile.png

0

ठीक है, आप संभावित रूप से एक पायथन स्क्रिप्ट का उपयोग कर सकते हैं।

#!/usr/bin/python
im = Image.open("in.png")
nx, ny = im.size
im2 = im.resize((int(nx*1.5), int(ny*1.5)), Image.BICUBIC)
im2.save("out.png")

स्रोत


पायथन 3.3.2 इंस्टॉलर (स्रोत कोड शामिल नहीं) 19.3 एमबी है, और पायथन 2.7.5 इंस्टॉलर 15.5 एमबी है।
ड्रू चापिन

5
यह छवि को आकार देगा, DPI को नहीं बदलेगा।
बॉबी

0

इसके लिए उचित इमेज मैजिक "कन्वर्ट" कमांड लाइन होगी, -सेम्पल तर्क का उपयोग करने के लिए:

convert image.png -resample 150x150 -units pixelsperinch ../ImagesAdjusted/image.png
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.