2012-05-22 7 views
7

जब मैं ऐप्पल के ऑटोमेटर को अपने आकार में छवियों का एक गुच्छा कट करने के लिए चलाता हूं तो ऑटोमेटर भी फाइलों की गुणवत्ता को कम करेगा (jpg) और वे धुंधला हो जाएंगे।ऐप्पल के ऑटोमेटर: जेपीजी के लिए संपीड़न सेटिंग्स?

मैं इसे कैसे रोक सकता हूं? क्या ऐसी सेटिंग्स हैं जिन पर मैं नियंत्रण कर सकता हूं?

संपादित करें:

या किसी अन्य उपकरण है कि एक ही काम करते हैं, लेकिन छवि गुणवत्ता को प्रभावित किए बिना देखते हैं?

उत्तर

5

ऑटोमेटर की "फसल छवियां" और "स्केल छवियों" कार्यों में कोई गुणवत्ता सेटिंग्स नहीं होती है - जैसा अक्सर ऑटोमेटर, सादगी ट्रम्प कॉन्फ़िगरेशन के साथ होता है। स्क्रिप्ट इमेज प्रोसेसिंग सिस्टम, जो the sips utility के माध्यम से छवि प्रसंस्करण

  1. खोल के लिए उपलब्ध कार्यों बनाता है: हालांकि, वहाँ कोको प्रोग्रामिंग का सहारा whithout CoreImage की छवि हेरफेर सुविधाओं का उपयोग करने के लिए एक और तरीका है। आप सबसे अधिक मिनट सेटिंग्स इस का उपयोग कर के साथ बेला सकता है, लेकिन के रूप में यह हैंडलिंग में एक सा रहस्यमय है, तो आप बेहतर दूसरा तरीका के साथ,
  2. AppleScriptImage Events, एक स्क्रिप्ट चेहराविहीन पृष्ठभूमि ओएस एक्स द्वारा प्रदान की आवेदन के माध्यम से प्रस्तुत किया जा सकता है । crop और scale आदेशों हैं, और एक संपीड़न स्तर निर्दिष्ट जब

    save <image> as JPEG with compression level (low|medium|high) 
    

    के साथ एक JPEG के रूप में बचत अपने "फसल"/"पैमाना" के बजाय एक "रन AppleScript" एक्शन का उपयोग करें और रैप करने का विकल्प छवि घटनाक्रम tell application "Image Events" ब्लॉक में आदेश देता है, और आपको सेट किया जाना चाहिए। उदाहरण के लिए, अपने आधे आकार के लिए छवि को मापना और अच्छी गुणवत्ता में एक JPEG के रूप में बचाने के लिए, मूल अधिलेखन:

    on run {input, parameters} 
        set output to {} 
        repeat with aPath in input 
         tell application "Image Events" 
          set aPicture to open aPath 
          try 
           scale aPicture by factor 0.5 
           set end of output to save aPicture as JPEG with compression level low 
          on error errorMessage 
           log errorMessage 
          end try 
          close aPicture 
         end tell 
        end repeat 
        return output -- next action processes edited files. 
    end run 
    

    - अन्य पैमाने के लिए, उसके अनुसार कारक समायोजित (1 = 100%, .5 = 50 %, .25 = 25% आदि); एक फसल के लिए, crop aPicture to {width, height} द्वारा प्रतिस्थापित करें। मैक ओएस एक्स ऑटोमेशन में scale और crop दोनों के उपयोग पर अच्छे ट्यूटोरियल हैं।

+0

इस सटीक उत्तर के लिए धन्यवाद लेकिन दुर्भाग्यवश ये सभी चीजें वास्तव में मुझसे कुछ नहीं कहती हैं। मैंने ऐप्पलस्क्रिप्ट के साथ कभी काम नहीं किया। मैं यह भी सोच रहा हूं कि यह क्यों हो रहा है क्योंकि मेरे स्वचालन में कुछ भी संपीड़न के लिए नहीं पूछता है। – Melros

+0

@melros: ऑटोमेटर क्रियाएं सादगी के लिए डिज़ाइन की गई हैं, कॉन्फ़िगर करने योग्यता नहीं, जिसका अर्थ है कि आप ज्यादातर क्रियान्वयन के निर्णय के रूप में कार्रवाई डेवलपर के निर्णयों की दया पर हैं। – kopischke

+0

@Melros: मैंने नमूना कोड के साथ अपना जवाब विस्तारित किया है। – kopischke

4

आप JPEG संपीड़न की राशि पर बेहतर नियंत्रण करना चाहते हैं, के रूप में kopischke कहा कि तुम sips उपयोगिता है, जो एक खोल स्क्रिप्ट में इस्तेमाल किया जा सकता का उपयोग करना होगा। यहाँ आप यह कैसे कर होगा स्वचालक में बताया गया है:

Passing files and compression settings to a shell script in Automator

सुनिश्चित करें कि पहले जाओ चर कार्रवाई का मूल्य किसी भी इनपुट को स्वीकार नहीं कर रहा है (सही:

पहले फ़ाइलों और संपीड़न सेटिंग मिल उन पर क्लिक करें, "अनदेखा इनपुट" का चयन करें), और दूसरा वैरिएबल का मान प्राप्त करें पहले से इनपुट लेता है। यह एक सरणी बनाता है जिसे तब खोल स्क्रिप्ट पर भेज दिया जाता है। सरणी में पहला आइटम संपीड़न स्तर है जो ऑटोमेटर स्क्रिप्ट को दिया गया था। दूसरी फाइलों की सूची है जो स्क्रिप्ट sips कमांड पर करेगी।

के शीर्ष पर विकल्पों में शेल स्क्रिप्ट कार्रवाई चलाएं, शैल के रूप में "/ bin/bash" चुनें और पास इनपुट के लिए "तर्क के रूप में" चुनें।

itemNumber=0 
compressionLevel=0 

for file in [email protected] 
do 
    if [ "$itemNumber" = "0" ]; then 
     compressionLevel=$file 
    else 
     echo "Processing $file" 
     filename=$file 
     sips -s format jpeg -s formatOptions $compressionLevel $file --out ${filename%.*}.jpg 
    fi 
    itemNumber=itemNumber+1; 
done 
osascript -e 'tell app "Automator" to display dialog "Done." buttons {"OK"}' 

आप परिणाम तल पर पर क्लिक करते हैं, यह आपको बताएंगे कि फाइल यह वर्तमान पर काम कर रहा है: तो फिर इस कोड पेस्ट करें। मज़ा संपीड़न करो!

+0

धन्यवाद एरिक! किसी भी मौके पर आपके पास अभी भी वर्कफ़्लो स्क्रिप्ट साझा करने के लिए है? – Warpling

+0

यहां आप यहां जाएं: http://www.wikiupload.com/5Z3C6CITGTBFW4R – Eric

2

एरिक का कोड बस शानदार है। अधिकांश नौकरियां हो सकती हैं। लेकिन यदि छवि के फ़ाइल नाम में स्पेस है, तो यह वर्कफ़्लो काम नहीं करेगा। (स्पेस के कारण स्पेस के कारण शेल स्क्रिप्ट तोड़ जाएगी।) इसके लिए एक आसान समाधान है: "इस वर्कफ़्लो में" खोजक आइटम का नाम बदलें "जोड़ें। "_" या अपनी पसंद की किसी भी चीज़ के साथ रिक्त स्थान बदलें। फिर, यह जाना अच्छा है।

'17

से

0

टिप्पणी "अंतरिक्ष" समस्या से बचने के लिए इसका नाम से भारतीय विदेश सेवा बदलने के लिए स्मार्ट है। वर्तमान आईएफएस का बैकअप लें और इसे केवल \ n में बदलें। और प्रसंस्करण पाश के बाद मूल आईएफएस बहाल करें।

ORG_IFS=$IFS 
IFS=$'\n' 
for file in [email protected] 
do 
    ... 
done 
IFS=$ORG_IFS 
संबंधित मुद्दे