एक छवि से सैकड़ों संकल्प उत्पन्न करें


8

मैं एक ऐसी परियोजना पर काम कर रहा हूँ जहाँ मुझे कई प्रस्तावों में एक ही छवि की आवश्यकता है। भाग्यशाली पर्याप्त छवि समान चौड़ाई / ऊंचाई संकल्प है और सभी संकल्पों के साथ समान ऊंचाई और चौड़ाई के साथ अच्छी तरह से काम करेगा, अर्थात 80x80px 100x100px आदि।

स्पष्ट रूप से मैं इसे Adobe Photoshop में हाथ से कर सकता था, लेकिन मुझे सचमुच 1000px तक सभी तरह से 73px से सैकड़ों विभिन्न प्रस्तावों की आवश्यकता है और यह एक मूर्खतापूर्ण मात्रा में मैनुअल समय लेगा। मैंने नेट खोजा है और मुझे जो भी मिल रहा है वह है थंबनेल जेनरेटर या एडोब फोटोशॉप बैच सेवर जो अभी भी काफी समय लेगा।

तो, जो मुझे मेरे सवाल पर लाता है, मैं एक ही छवि से सैकड़ों प्रस्तावों को जल्दी से जल्दी कैसे बना सकता हूं, या तो विंडोज या लिनक्स में।


1) उनके पास ImgIx की तरह CDN हैं जो आपके लिए गतिशील रूप से छवियों का आकार बदलेंगे। 2) मैंने छोटे जानवरों ($ 15) द्वारा ThumbNailer का उपयोग बैच प्रक्रिया छवियों के लिए किया है। आप इसे केवल "प्रोफाइल" के साथ कमांड लाइन के माध्यम से चलाते हैं जिसे आप कॉन्फ़िगर करते हैं और कमांड लाइन के माध्यम से कॉल करते हैं। प्रत्येक रिज़ॉल्यूशन के लिए, आपको एक अलग प्रोफ़ाइल की आवश्यकता होगी। चूंकि आपकी छवियां 1: 1 हैं और आपको किसी भी "बुद्धिमान" आकार बदलने वाले विकल्प की आवश्यकता नहीं है, मुझे लगता है कि ImageMagick पर्याप्त से अधिक होगा।
सूर्य

क्या आप इसके बजाय एकल वेक्टर छवि का उपयोग कर सकते हैं?
१४:१५ पर

2
मैं इस परियोजना के लिए उत्सुक हूं कि विभिन्न आकारों में एक ही छवि के सैकड़ों की आवश्यकता होगी। यह उत्तर के लिए प्रासंगिक नहीं है, लेकिन मैं फिर भी उत्सुक हूं।

2
क्या आप सुनिश्चित हैं कि आपको इतने सारे प्रस्तावों में एक छवि की आवश्यकता है? इसके बारे में फिर से सोचें, बहुत अधिक सावधानी से। अन्य लोगों के साथ इस पर चर्चा करें। मैं इस बात से इंकार नहीं कर सकता कि कहीं एक किनारे का मामला है जहां यह वास्तव में मामला है, लेकिन अगर मुझे शर्त लगाना था, तो मैं "आप गलत कर रहे हैं" पर शर्त लगा सकते हैं।
ओ ० '।

@Lrorois आपके अधिकार के लिए हमें उन सभी की आवश्यकता नहीं है, लेकिन कुल मिलाकर 30mb के लिए (1000pngs) यह PNG के लिए एक बड़ा मुद्दा नहीं है।
साइमन हैटर

जवाबों:


19

मैं एक स्रोत छवि के आधार पर बहुत सारी छवियां बनाना चाहता हूं!

जाहिर है मैं इसे Adobe Photoshop में हाथ से कर सकता था ... और यह मैनुअल समय की एक मूर्खतापूर्ण राशि लेगा।

आप बिल्कुल सही है। कंप्यूटर को आसान दोहराव कार्य करने दें; यही वे अच्छे हैं। के रूप में टॉम रूह का जवाब नोट्स , आप उपयोग कर सकते हैं ImageMagickइस के लिए।

हालांकि, वहाँ एक समस्या है:

भाग्यशाली पर्याप्त छवि 4: 3 रिज़ॉल्यूशन है और सभी रिज़ॉल्यूशन के साथ समान ऊंचाई और चौड़ाई के साथ अच्छी तरह से काम करेगी, अर्थात 80x80px 100x100px आदि।

(जोर मेरा)

यह स्पष्ट नहीं है कि आप क्या संकल्प चाहते हैं- 4: 3 जैसा कि कहा गया है, या 1: 1 जैसा कि निहित है।

हालांकि, की आपकी आवश्यकताओं के आधार न्यूनतम 73px और अधिकतम 1000 पिक्सेल और प्रस्तावों की hundereds ; मैंने एक छोटी सी स्क्रिप्ट लिखी है जिसमें अधिकांश संभावनाएं शामिल होनी चाहिए (जिसमें आप जिस तरह से चाहें उस पर तरल आकार बदलना भी शामिल है) जिसे कुछ चर बदलकर सेट किया जा सकता है।

आसान नकल के लिए यहां पास्टबिन से उपलब्ध स्क्रिप्ट भी :

#!/bin/bash
# resizer.sh - resize target image between two resolutions
# accepts file as either first argument or by setting FILEPATH variable

# SETTINGS

SMALLEST_WIDTH=73   # px
LARGEST_WIDTH=1000  # px
FILEPATH=           # set if you don't want to pass in image as argument
NUM_OF_RESOLUTIONS=100      # number of images generated; will generate between
                    # $SMALLEST_WIDTH and $LARGEST_WIDTH
RATIO=                      # set if you want to specify width/height
                    # (eg 1/1, 4/3, 16/9), blank is preserve current ratio


# NOTE: resizing to other aspect ratios may be slow/distorty:
# as per http://www.imagemagick.org/Usage/resize/#noaspect
# Seamless resizing (default) may be preferred, see:
# http://www.imagemagick.org/Usage/resize/#liquid-rescale
# but note it is slower, particularly as images get larger

LIQUID=0

# SCRIPT BELOW
# silent by default; uncomment "printf" lines for a description of what is happening
die() { printf "$@\n" 1>&2 ; exit 1; }

if [ -z "$FILEPATH" ]; then
    if [ -z "$1" ]; then die "Need to supply file to work on either as argument or by setting FILEPATH!";
    else FILE="$1";
    fi
else
    FILE="$FILEPATH"
fi

# check file exists and is regular file

if [ ! -e "$FILE" ]; then die "$FILE does not exist!"; fi
if [ ! -f "$FILE" ]; then die "$FILE is not a regular file!"; fi

i=0
step=$(echo "($LARGEST_WIDTH - $SMALLEST_WIDTH) / ($NUM_OF_RESOLUTIONS - 1)" | bc -l)
#printf "Resolution step is: %s\n-------------" "$step"
while [ $i -lt $NUM_OF_RESOLUTIONS ]; do
    # handle ratio
    WIDTH=$(echo "$SMALLEST_WIDTH+($step*$i)" | bc -l)
    if [ -z "$RATIO" ]; then
            #printf "convert %s -resize %s %s\n" "$FILE" "$WIDTH" "${FILE%.*}-${WIDTH%.*}px.${FILE##*.}"
            convert "$FILE" -resize "$WIDTH" "${FILE%.*}-${WIDTH%.*}px.${FILE##*.}"
    else
            HEIGHT=$(echo "$WIDTH * $RATIO" | bc -l)
            if [ "$LIQUID" -eq 0 ]; then
                    # Uncomment convert line for distorted ("squashed") resizing
                    #printf "convert %s -resize %sx%s\! %s\n" "$FILE" "$WIDTH" "$HEIGHT" "${FILE%.*}-${WIDTH%.*}px.${FILE##*.}"
                    convert "$FILE" -resize "$WIDTH"x"$HEIGHT"\! "${FILE%.*}-${WIDTH%.*}px.${FILE##*.}"
            else
                    # Liquid resizing: http://www.imagemagick.org/Usage/resize/#liquid-rescale
                    # fast aspect ration resize first, then liquid
                    #printf "convert %s -resize %s %s\n" "$FILE" "$WIDTH" "${FILE%.*}-${WIDTH%.*}px.${FILE##*.}"
                    convert "$FILE" -resize "$WIDTH" "${FILE%.*}-${WIDTH%.*}px.${FILE##*.}"
                    #printf "%s details are now:\n %s\n" "${FILE%.*}-${WIDTH%.*}px.${FILE##*.}" "$(identify "${FILE%.*}-${WIDTH%.*}px.${FILE##*.}")"
                    #printf "convert %s -liquid-rescale %sx%s\! %s\n" "${FILE%.*}-${WIDTH%.*}px.${FILE##*.}" "$WIDTH" "$HEIGHT" "${FILE%.*}-${WIDTH%.*}px.${FILE##*.}"
                    convert "${FILE%.*}-${WIDTH%.*}px.${FILE##*.}" -liquid-rescale "$WIDTH"x"$HEIGHT"\! "${FILE%.*}-${WIDTH%.*}px.${FILE##*.}"
            fi
    fi
    (( i++ ))
done

नोट: मानों की गणना के लिए उपधाराओं पर थोड़ा-सा ओवर-द-टॉप और ऐसे, लेकिन हे हो। जैसा कि उल्लेख किया गया है, जो printfचल रहा है, उसके बारे में एक विचार के लिए लाइनों को अनियंत्रित किया जा सकता है, अन्यथा यह मौन रूप से नियम के अनुसार चुपचाप संचालित होगा । कुछ चित्र बिल्कुल गणना के अनुसार आयाम नहीं होंगे (जैसे 193px बनाम 138.5454545454545454545452px) क्योंकि आप एक उपयोगी तरीके से भिन्नात्मक पिक्सेल नहीं कर सकते हैं।


1
वाह, कमाल! बस परीक्षण किया गया और यह प्यारा काम कर गया, दुख की बात है कि यह फ़ाइल लेबल का एक नया मुद्दा बनाता है, क्योंकि 1, 2, 3, 4 आदि मुझे कुछ गणित करने या छवि का निरीक्षण किए बिना संकल्प को सूचित नहीं करते हैं। क्या आपको पता है कि मैं स्क्रिप्ट को फिल्माने के filename-500x500.pngबजाय संकल्प के लिए अनुकूलित करने के लिए स्क्रिप्ट को कैसे अनुकूलित कर सकता हूंfilename-1.png
साइमन हीटर

खुशी है कि यह आपकी अधिक-या-कम संतुष्टि के लिए काम करता है। स्पष्ट करने के लिए धन्यवाद, मैं एक अधिक वर्णनात्मक फ़ाइल नाम के साथ उत्तर को अपडेट करूंगा। चाहेंगे filename-width.pngपर्याप्त? मोड में से एक ( मूल पहलू अनुपात रखें ) सीधे एक स्पष्ट ऊंचाई की गणना नहीं करता है। मैं आसानी से जानकारी प्राप्त कर सकता हूं (के माध्यम से identify) लेकिन यह मूल पहलू अनुपात के मामलों में एक अतिरिक्त प्रति-छवि कॉल को बचाएगा।
बर्टिएब

वाह, त्वरित प्रतिक्रिया के लिए धन्यवाद! जब मैं ऑटो ऊंचाई के लिए एक ही नंबर मान लेंगे चौड़ाई चौड़ाई काम करेगा।
साइमन हैटर

4: 3 से मेरा मतलब क्या है के संबंध में टीवी और मॉनिटर्स, स्क्वायर वालों में पाया गया अनुपात .. यानी google.co.uk/… और लेटर बॉक्स 16: 9 आदि
सिमोन हैटर

1
मुझे इसे डाउनलोड करना होगा, धन्यवाद! सुनो! .... आपकी किंवदंती, स्क्रिप्ट अजीब तरह से काम करती है! आपकी मदद के लिए धन्यवाद।
साइमन हेटर

7

जब तक आप कुछ कमांड लाइन को संभाल सकते हैं और कुछ सरल BASH स्क्रिप्टिंग लिख सकते हैं। आप ImageMagick का उपयोग कर सकते हैं


1
यदि रिज़ॉल्यूशन 4: 3 पहलू राशन में है, तो कभी 4 पिक्सेल चौड़े होने के लिए, आप एक और 3 ऊपर जाते हैं। इसके अलावा, 80x80 या 100x100 प्रस्तावों में 1: 1 पहलू अनुपात होता है। चूंकि आप 4: 3 के अनुपात से 1: 1 के अनुपात में जा रहे हैं, इसलिए आपको या तो छवि को खींचना होगा या अतिरिक्त पिक्सल को क्रॉप करना होगा। यकीन नहीं होता अगर यह मायने रखता है लेकिन क्या आप इससे बचने के लिए अपने 4: 3 के प्रस्ताव को नहीं रख सकते हैं?
गेरुता जूल

1
यह जानकर सुकून मिलता है कि समाधान संभव है, लेकिन इसका जवाब यह नहीं है कि इसे कैसे पूरा किया जाए। क्या आप एक उदाहरण या कुछ निर्देशों के साथ अपने उत्तर का विस्तार कर सकते हैं? धन्यवाद।
फिक्सर 1234

1) आप Convert.exe का उपयोग कर सकते हैं, जो कि -Mize के विकल्प के साथ ImageMagic का हिस्सा है: imagemagick.org/discourse-server/viewtopic.php?t=15438
Sun
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.