আপনি যদি আপনার রুবি অ্যাপ্লিকেশানে যেকোনো ধরনের ছবি নিয়ে কাজ করেন, তাহলে একটি ভালো সুযোগ আছে যে আপনি সেগুলিকে কোনো না কোনো উপায়ে পরিবর্তন করতে চাইবেন।
আপনার ব্যবহারকারীদের জন্য স্থান বাঁচাতে এবং দ্রুত ডাউনলোড করতে তাদের আকার পরিবর্তন করুন।
কিন্তু আপনি এটা কিভাবে করতে পারেন?
MiniMagick হল একটি রত্ন যা আপনাকে সাহায্য করতে পারে৷
৷এটি ImageMagick প্রোগ্রাম এবং আপনার রুবি কোডের মধ্যে একটি ইন্টারফেস।
এটি আপনাকে আপনার প্রয়োজন অনুসারে কাস্টমাইজ করতে আপনার চিত্রগুলিতে সমস্ত ধরণের রূপান্তর প্রয়োগ করতে সহায়তা করে!
প্রথম :
আপনাকে ইমেজ ম্যাজিক ইনস্টল করতে হবে আপনার অপারেটিং সিস্টেম প্যাকেজ ম্যানেজার ব্যবহার করে, অথবা প্রকল্পের ওয়েবসাইট থেকে ইনস্টলার ডাউনলোড করে।
তারপর mini_magick
দিয়ে আপনি আপনার ছবিতে পরিবর্তন করতে নিয়মিত রুবি পদ্ধতি ব্যবহার করতে পারেন।
আসুন কিছু উদাহরণ দেখি!
একটি ছবি খোলা হচ্ছে
আপনি দুটি উপায়ে একটি ছবি খুলতে পারেন:
MiniMagick::Image.open
=> ছবির একটি অনুলিপি তৈরি করেMiniMagick::Image.new
=> আসল চিত্র পরিবর্তন করে
open
পদ্ধতিটি একটি ফাইলের নাম এবং একটি URL উভয়ই নেয়, যাতে আপনি সরাসরি ওয়েব থেকে ছবি তুলতে পারেন৷
আমি Unsplash, একটি বিনামূল্যের ফটো শেয়ারিং সাইট থেকে এই ছবিটি ব্যবহার করতে যাচ্ছি।
আপনি এইভাবে ছবিটি লোড করতে পারেন :
require 'mini_magick' image = MiniMagick::Image.open( "https://images.unsplash.com/photo-1516295615676-7ae4303c1c63" )
এখন যেহেতু আপনি ছবিটি লোড করেছেন আপনি এটি সম্পর্কে তথ্য পেতে পারেন, যেমন এর আকার, মাত্রা, বিন্যাস ইত্যাদি৷
এখানে কিভাবে :
image.dimensions # [3963, 5944] image.type # "JPEG" image.human_size # "20.7663MB"
এটি একটি বিশাল চিত্র, তাই এটির আকার পরিবর্তন করুন!
এছাড়াও, আমি এটিকে ঘোরাতে চাই যাতে এটি উল্লম্বের পরিবর্তে অনুভূমিক হয়।
আকার পরিবর্তন করুন এবং ঘোরান
আপনি এইভাবে একটি চিত্রের আকার পরিবর্তন করতে পারেন:
image.resize "500x500"
এটি আপনাকে একটি সঠিক মাত্রা দেয়, কিন্তু আপনি যদি দৃষ্টিভঙ্গি অনুপাত অক্ষত রেখে ছবিটিকে শতাংশে স্কেল করতে চান...
আপনি এটি করতে পারেন৷ :
image.resize "25%"
এটি আসল আকারের 25% এর আকার পরিবর্তন করে, 25% দ্বারা পুনরায় আকার নয়৷
এখন :
আপনাকে ফাইলটি ডিস্কে লিখে পরিবর্তনগুলি প্রয়োগ করতে হবে৷
এখানে কিভাবে :
image.write("/tmp/new_image.jpg")
আপনি যদি সরাসরি পরিবর্তনের জন্য চিত্রটি খুলে থাকেন (new
ব্যবহার করে , পরিবর্তে open
) তাহলে আপনাকে write
ব্যবহার করতে হবে না .
কিভাবে একটি ছবি ক্রপ করবেন
আপনি চান না এমন জিনিসগুলি সরাতে এবং এটিকে ছোট করতে আপনি একটি চিত্রের অংশগুলি ক্রপ করতে পারেন৷
৷সিনট্যাক্স হল এই :
<width> x <height> +<xoffset> +<yoffset>
উদাহরণস্বরূপ, যদি আপনি একটি চিত্রের নীচের অর্ধেক কাটতে চান:
image.crop "100%x50%+0+0"
অর্ধেক চিত্রের উল্লম্ব ক্রপের জন্য:
image.crop "50%x100%+0+0"
আপনি যে ক্রপটি খুঁজছেন তা না পাওয়া পর্যন্ত আপনি এই সংখ্যাগুলির সাথে খেলতে পারেন৷
গোলাকার ছবি তৈরি করা
আপনি যদি আপনার ছবিকে গোলাকার করতে চান, তাহলে আপনাকে কিছু পদ্ধতি একত্রিত করতে হবে।
এরকম :
MiniMagick::Tool::Convert.new do |img| img.size '3900x5000' img << 'xc:transparent' img.fill "apple.jpg" img.draw "translate 2000, 2500 circle 0,0 2000,0" img.trim img << 'circle.png' end
এটি প্রদত্ত আকারের একটি খালি ক্যানভাস তৈরি করে, যা আপনি যে চিত্রটিকে বৃত্তাকার করতে চান তার আকার হওয়া উচিত৷
তারপর :
এই ক্যানভাসটি চিত্রে পূর্ণ, মাঝখানে একটি বৃত্ত আঁকা হয়েছে এবং বৃত্তের চারপাশের সবকিছু মুছে ফেলা হয়েছে।
অবশেষে, ছবিটি “circle.png” হিসাবে সংরক্ষিত হয়।
লক্ষ্য করুন যে translate 2000, 2500
অনুবাদ করুন ক্যানভাসের মাঝখানের স্থানাঙ্ক।
যখন 2000
circle 0,0 2000,0
-এ বৃত্তের ব্যাসার্ধ।
কিভাবে MiniMagick এর সাথে একটি বর্ডার যোগ করবেন
mini_magick
এর মাধ্যমে একটি সীমানা যোগ করা বিশ্বের সবচেয়ে সহজ কাজ .
উদাহরণ :
img.border 10
আপনি এইভাবে রঙ সেট করতে পারেন:
img.bordercolor("white")
write
ভুলবেন না আপনি যদি open
ব্যবহার করেন তাহলে আপনার পরিবর্তন new
এর পরিবর্তে .
ইমেজ অপ্টিমাইজেশান
চিত্রগুলিকে ছোট করার বাইরেও অপ্টিমাইজ করা যেতে পারে৷
উদাহরণস্বরূপ, আপনি strip
ব্যবহার করতে পারেন mini_magick
-এ পদ্ধতি মেটাডেটা অপসারণ করতে।
এরকম :
image.strip
আপনি যদি অতিরিক্ত অপ্টিমাইজেশন চান তাহলে আপনি image_optim
এর মত একটি রত্ন ব্যবহার করতে পারেন .
এরকম :
require 'image_optim' image_optim.optimize_image!('orange.jpg')
ভিডিও টিউটোরিয়াল দেখুন
সারাংশ
আপনি শিখেছেন কিভাবে mini_magick
ব্যবহার করে ছবি পরিবর্তন করতে হয় (ঘোরানো, আকার পরিবর্তন করা, ক্রপ করা) রুবি মণি!
পড়ার জন্য ধন্যবাদ।