একটি একক চিত্র থেকে কয়েকশ রেজোলিউশন তৈরি করুন


8

আমি এমন একটি প্রকল্পে কাজ করছি যেখানে একাধিক রেজোলিউশনে আমার একক চিত্রের প্রয়োজন। ভাগ্যবান যথেষ্ট পরিমাণে চিত্রটি একই প্রস্থ / উচ্চতার রেজোলিউশন এবং একই উচ্চতা এবং প্রস্থের সাথে সমস্ত রেজোলিউশনের সাথে ভাল কাজ করবে, যেমন 80x80px 100x100px ইত্যাদি etc.

স্পষ্টতই আমি এটি অ্যাডোব ফটোশপটিতে হাতে হাতে করতে পেরেছিলাম তবে আমার আক্ষরিকভাবে 73px থেকে শুরু করে 1000px পর্যন্ত কয়েক শতাধিক রেজোলিউশন দরকার এবং এতে ম্যানুয়াল সময় লাগবে। আমি নেটটি অনুসন্ধান করেছি এবং আমি যা পেতে থাকি তা হ'ল থাম্বনেইল জেনারেটর বা অ্যাডোব ফটোশপ ব্যাচ সেভার যা এখনও যথেষ্ট পরিমাণ সময় নিতে পারে।

সুতরাং, যা আমাকে আমার প্রশ্নে নিয়ে আসে, উইন্ডোজ বা লিনাক্সে, আমি কীভাবে একটি একক চিত্র থেকে যত তাড়াতাড়ি সম্ভব শত শত রেজোলিউশন তৈরি করতে পারি।


1) তাদের ইমজিআইএক্সের মতো সিডিএন রয়েছে যা আপনার জন্য চিত্রগুলিকে পরিবর্তনশীল আকারে পরিবর্তন করবে। 2) ব্যাচ প্রক্রিয়া চিত্রগুলিতে আমি ছোট প্রাণী দ্বারা Animal 15 ব্যবহার করে থাম্বনেলার ​​(iler 15)। আপনি কমান্ড লাইনের মাধ্যমে এটি "প্রোফাইলগুলি" দিয়ে আপনি চালিত করেন যা আপনি কনফিগার করেন এবং কমান্ড লাইনের মাধ্যমে কল করেন। প্রতিটি রেজোলিউশনের জন্য আপনার পৃথক প্রোফাইল প্রয়োজন। যেহেতু আপনার চিত্রগুলি 1: 1 এবং আপনার কোনও "বুদ্ধিমান" আকার পরিবর্তন করতে বিকল্পের প্রয়োজন নেই, তাই আমি মনে করি ইমেজম্যাগিক পর্যাপ্ত পরিমাণের চেয়ে বেশি হবে।
সূর্য

আপনি কি পরিবর্তে একটি একক ভেক্টর চিত্র ব্যবহার করতে পারেন?
অনুরাগ করুন

2
আমি প্রকল্প সম্পর্কে কৌতূহলী যে বিভিন্ন মাপে একই চিত্র শত শত প্রয়োজন হবে। এটি উত্তরের সাথে প্রাসঙ্গিক নয়, তবে আমি তবুও উত্সাহী।

2
আপনি কি নিশ্চিত যে এতগুলি রেজোলিউশনে আপনার একটি চিত্র প্রয়োজন? আরও একবার মনোযোগ দিয়ে এ সম্পর্কে আবার চিন্তা করুন। অন্যান্য লোকের সাথে এটি আলোচনা করুন। আমি সত্যিকার অর্থেই কোথাও প্রান্তের ঘটনাটি প্রমাণ করতে পারছি না, তবে যদি আমাকে বাজি ধরতে হয় তবে আমি "আপনি এটি ভুল করছেন" বাজি ধরব।
o0 '

@ লোহরো আপনার অধিকার, আমাদের এগুলি সবের দরকার নেই, তবে মোট 30 এমবি এর জন্য (1000pngs) পিএনজি ব্যবহার না করা এটি কোনও বড় সমস্যা নয়।
সাইমন হাইটার

উত্তর:


19

আমি উত্স চিত্রের উপর ভিত্তি করে প্রচুর চিত্র তৈরি করতে চাই!

স্পষ্টতই আমি এটি অ্যাডোব ফটোশপটিতে হাতে হাতে করতে পেরেছিলাম ... এবং এটির জন্য ম্যানুয়াল সময় লাগবে।

তুমি একদম ঠিক. কম্পিউটারকে সহজ পুনরাবৃত্তিমূলক কাজ করতে দিন; এই যে তারা ভাল হয়। হিসাবে টম রূহুল এর উত্তর নোট , আপনি ব্যবহার করতে পারেন ImageMagickএই জন্য।

তবে, একটি সমস্যা আছে:

যথেষ্ট ভাগ্যবান চিত্রটি 4: 3 রেজোলিউশন এবং একই উচ্চতা এবং প্রস্থের সাথে সমস্ত রেজোলিউশনের সাথে ভাল কাজ করবে, যেমন 80x80px 100x100px ইত্যাদি

(জোর আমার)

আপনি কি রেজোলিউশন চান তা স্পষ্ট নয় - উল্লিখিত হিসাবে 4: 3 বা 1: 1 অনুসারে।

তবে, আপনার ন্যূনতম 73px এবং সর্বাধিক 1000px এবং রেজোলিউশনগুলির 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.54545454545454545452px) কারণ আপনি কার্যকর উপায়ে ভগ্নাংশের পিক্সেল রাখতে পারবেন না।


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 স্ক্রিপ্টিং লিখতে পারেন। আপনি ইমেজম্যাগিক ব্যবহার করতে পারেন


1
যদি রেজোলিউশনটি 4: 3 দিক রেশনে হয় তবে চিরকাল 4 পিক্সেল প্রশস্ত হয়ে আপনি আরও 3 টি উপরে যান। এছাড়াও, 80x80 বা 100x100 রেজোলিউশনে একটি 1: 1 টির অনুপাত রয়েছে। যেহেতু আপনি একটি 4: 3 অনুপাত থেকে 1: 1 অনুপাতের দিকে চলেছেন, আপনাকে চিত্রটি প্রসারিত করতে হবে বা অতিরিক্ত পিক্সেল কাটাতে হবে। এটি গুরুত্বপূর্ণ কিনা তা নিশ্চিত না তবে এটি এড়াতে আপনি কেবল নিজের 4: 3 রেজোলিউশনটি রাখতে পারবেন না?
গেরুটা

1
এটি সমাধানের পক্ষে সম্ভব তা জানা সান্ত্বনাজনক, তবে কীভাবে এটি সম্পাদন করা যায় তার উত্তর দেয় না। আপনি একটি উদাহরণ বা কিছু নির্দেশাবলী দিয়ে আপনার উত্তর প্রসারিত করতে পারেন? ধন্যবাদ।
ফিক্সার 1234

1) আপনি রূপান্তর.এক্সে ব্যবহার করতে পারেন যা -রাইজ বিকল্পের সাথে চিত্রমাধ্যমের অংশ: চিত্রমাগিক.আর.ডিস্কোর্স- সারভার
সান
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.