मुखपृष्ठ » कैसे » लिनक्स शेल के माध्यम से x पिगल्स की तुलना में PNG इमेज को बड़ा करना

    लिनक्स शेल के माध्यम से x पिगल्स की तुलना में PNG इमेज को बड़ा करना

    जब आप अपनी वेबसाइट के डिज़ाइन को बदलने का काम कर रहे हैं, तो आपको अपने लेख की सामग्री में चित्रों की चौड़ाई से चिंतित होना होगा। मेरे द्वारा लिखे गए अधिकांश लेखों पर मुझे बड़े पैमाने पर बड़े स्क्रीनशॉट मिले हैं, इसलिए यदि मैं साइडबार को बढ़ाना चाहता हूं तो यह पता लगाना महत्वपूर्ण है कि नए डिजाइन में फिट होने के लिए कौन से चित्र बहुत विस्तृत होने जा रहे हैं।.

    चूंकि मैं एक प्रोग्रामर हूं, इसलिए मेरे लिए ऐसा करने के लिए एक छोटा सा आवेदन लिखना आसान होगा, लेकिन इसने मुझे सोचना शुरू कर दिया ... मैं लिनक्स कमांड लाइन पर ऐसा क्यों नहीं कर सकता?

    पहली बात यह है कि जब आप उन पर "फ़ाइल" कमांड चलाते हैं, तो पीएनजी चित्र आकार डेटा प्रदर्शित करते हैं:

    $ फ़ाइल image3.png
    image3.png: PNG इमेज डेटा, 613 x 657, 8-बिट / कलर RGBA, नॉन-इंटरलेस्ड

    इस साइट पर 99% चित्र पीएनजी प्रारूप में हैं। तो अब इसे मेरी अपलोड डायरेक्टरी की सभी फाइलों के लिए एक लूप में फेंक दें:

    में $ f के लिए * .Png; फाइल $ f; किया

    image.png: PNG इमेज डेटा, 631 x 185, 8-बिट / कलर RGBA, नॉन-इंटरलेज्ड
    image1.png: PNG इमेज डेटा, 631 x 96, 8-बिट / कलर RGBA, नॉन-इंटरलेज्ड
    image10.png: पीएनजी इमेज डेटा, 375 x 395, 8-बिट / कलर RGBA, नॉन-इंटरलेज्ड
    image11.png: पीएनजी इमेज डेटा, 484 x 241, 8-बिट / कलर RGBA, नॉन-इंटरलेस्ड
    -कतरना-

    यह अधिक उपयोगी है, लेकिन मुझे डेटा को सॉर्ट करने के लिए एक्सेल या इसी तरह के एप्लिकेशन में डेटा को खींचना होगा, इसलिए मैंने सिर्फ चौड़ाई के कॉलम को खींचने के लिए लिनक्स "कट" कमांड का उपयोग करने का निर्णय लिया।.

    आप पाँचवाँ कॉलम लेने के लिए -f5 पैरामीटर कट को बताता है, और -d \ के बाद एक स्पेस के साथ कटौती को बताता है कि सीमांकक के रूप में एक स्पेस का उपयोग करने के लिए। स्लैश \ _ कैरेक्टर एक कैरेक्टर के रूप में स्पेस का उपयोग करने के लिए शेल बताने के लिए एक एस्केप कैरेक्टर है, न कि व्हॉट्सएप के रूप में.

    $ में f के लिए $ .png; फ़ाइल $ f | कट -f5 -d \; किया

    631
    631
    375
    484
    -कतरना-

    पूरी तरह से उपयोगी आउटपुट नहीं है, क्या यह है? आइए पुश करते हैं कि स्टेटमेंट के दौरान बैश के माध्यम से, और उसके बाद ही फाइल कमांड का आउटपुट दिखाते हैं, जब चौड़ाई 600 पिक्सल से अधिक हो.

    "फ़ाइल $ f |" के आसपास '(backtick) के निशान पर ध्यान दें कट… ”खंड, जो इंगित करता है कि the अंदर की आज्ञाओं को एकल आउटपुट के रूप में संसाधित किया जाएगा और यदि वह कथन में खिलाया जाता है, जहां हम -gt (से अधिक) का उपयोग करते हैं। यह भी ध्यान दें कि आपको कोष्ठक के दोनों ओर रिक्त स्थान की आवश्यकता है []

    f में * .png के लिए; अगर ['फ़ाइल $ f | cut -f5 -d \ '-gt 600]; उसके बाद $ f; फाई;

    image.png: PNG इमेज डेटा, 631 x 185, 8-बिट / कलर RGBA, नॉन-इंटरलेज्ड
    image1.png: PNG इमेज डेटा, 631 x 96, 8-बिट / कलर RGBA, नॉन-इंटरलेज्ड
    image17.png: PNG इमेज डेटा, 638 x 340, 8-बिट / कलर RGBA, नॉन-इंटरलेज्ड
    image18.png: PNG इमेज डेटा, 608 x 448, 8-बिट / कलर RGBA, नॉन-इंटरलेज्ड
    -कतरना-

    अब हमारे पास 600 पिक्सेल से अधिक चौड़ी सभी फाइलों की एक सूची है। आप फ़ाइलनामों के अंत में "फ़ाइल $ f" को समायोजित कर सकते हैं, अगर आपको कॉपी करने या उन्हें कहीं और स्थानांतरित करने की आवश्यकता हो तो केवल फ़ाइल नाम को प्रतिध्वनित करें:

    f में * .png के लिए; अगर ['फ़ाइल $ f | cut -f5 -d \ '-gt 600]; फिर इको $ f; फाई; किया

    image.png
    image1.png
    image17.png
    image18.png
    -कतरना-

    लिनक्स शेल अविश्वसनीय रूप से शक्तिशाली है! यह समाधान वास्तव में सभी के लिए व्यावहारिक नहीं है, लेकिन यह जानना अच्छा है कि शेल के साथ कैसे काम किया जाए ताकि आप इस प्रकार के कार्य को पूरा कर सकें जब आपको आवश्यकता हो.