আমি উত্স চিত্রের উপর ভিত্তি করে প্রচুর চিত্র তৈরি করতে চাই!
স্পষ্টতই আমি এটি অ্যাডোব ফটোশপটিতে হাতে হাতে করতে পেরেছিলাম ... এবং এটির জন্য ম্যানুয়াল সময় লাগবে।
তুমি একদম ঠিক. কম্পিউটারকে সহজ পুনরাবৃত্তিমূলক কাজ করতে দিন; এই যে তারা ভাল হয়। হিসাবে টম রূহুল এর উত্তর নোট , আপনি ব্যবহার করতে পারেন 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) কারণ আপনি কার্যকর উপায়ে ভগ্নাংশের পিক্সেল রাখতে পারবেন না।