C++ এর জন্য ওপেন সোর্স দ্রুত ইমেজ প্রসেসিং লাইব্রেরি
জনপ্রিয় ইমেজ ফরম্যাট তৈরি করুন, ম্যানিপুলেট করুন, আঁকুন, ভাগ করুন, কপি করুন এবং রূপান্তর করুন; ফিল্টার প্রয়োগ করুন, দুটি ছবি ভাগ করুন, ফ্রি C++ লাইব্রেরির মাধ্যমে একটি ছবি গ্রিড করুন।
libvips হল একটি ওপেন সোর্স অ্যাডভান্সড ইমেজ প্রসেসিং লাইব্রেরি যা খুব কম মেমরি ব্যবহার করে এবং খুব দ্রুত অপারেশন করে। লাইব্রেরিটি সহজেই বড় ছবিগুলি পরিচালনা করতে পারে এবং JPEG, TIFF, PNG, WebP, HEIC, FITS, Matlab, OpenEXR, PDF, SVG, HDR, PPM / PGM / PFM, CSV, GIF এর মতো শালীন পরিসরের ইমেজ ফাইল ফর্ম্যাটগুলিকে সমর্থন করে৷ , বিশ্লেষণ করুন, NIfTI, DeepZoom, এবং OpenSlide। এটি সহজেই ইমেজম্যাজিক বা গ্রাফিক্সম্যাজিকের মাধ্যমে ছবি লোড করতে পারে, এটি DICOM এর মতো ফরম্যাটের সাথে কাজ করার অনুমতি দেয়।
libvips আদিমগুলি সংবেদনশীলভাবে প্রয়োগ করা হয় এবং রান-টাইম কোড জেনারেশনের মতো কিছু ব্যবহার কৌশল চিত্রগুলির দ্রুত প্রক্রিয়াকরণে সহায়তা করে। অন্যান্য ইমেজ প্রসেসিং লাইব্রেরির তুলনায়, এটা উল্লেখ করা হয়েছে যে libvips-এর সামান্য RAM প্রয়োজন এবং দ্রুত চালানো হয়, বিশেষ করে একাধিক CPU সহ মেশিনে। এটি মূলত বুদ্ধিমান স্থাপত্যের কারণে এটি ব্যবহার করে যা স্বয়ংক্রিয়ভাবে চিত্রের কার্যপ্রবাহকে বিভক্ত করে।
লাইব্রেরি সাধারণ 8-বিট int থেকে জটিল 128-বিট পর্যন্ত সাংখ্যিক প্রকারের বিশাল পরিসরের জন্য সমর্থন প্রদান করে। বেশিরভাগ ইমেজ প্রসেসিং লাইব্রেরি থ্রেডেড অপারেশন ব্যবহার করে কিন্তু অন্যদিকে libvips ইমেজ IO সিস্টেমে থ্রেডিং রাখে এবং এটিতে কাজ করার জন্য প্রতিটি থ্রেডে সম্পূর্ণ ইমেজ পাইপলাইনের একটি কপি বরাদ্দ করে। এই অনুভূমিক থ্রেডিং শৈলী প্রসেসর ক্যাশের আরও ভাল ব্যবহার করে এবং লকিং হ্রাস করে।
libvips লাইব্রেরি হল একটি ইমেজ প্রসেসিং লাইব্রেরি যা অন্য অনেক লাইব্রেরির থেকে ভালো পারফরম্যান্স প্রদান করে। লাইব্রেরি বেশ কিছু গুরুত্বপূর্ণ ইমেজ প্রসেসিং ফিচারের জন্য সমর্থন প্রদান করেছে যেমন ছবি আঁকা, দুটি ছবিকে ভাগ করা, একটি ছবিতে একটি বৃত্ত আঁকা, একটি ছবি অনুলিপি করা, একটি চিত্রকে অন্য ছবিতে আঁকা, একটি চিত্রের উপর একটি লাইন আঁকা, একটি চিত্র কাস্ট করা, ক্যাশে একটি ছবি, দুটি ছবি যোগ করুন, একটি গাউসিয়ান ছবি তৈরি করুন, একটি চিত্র থেকে একটি বিন্দু পড়ুন, একটি চিত্র গ্রিড করুন, ছবিটি JPEG ফাইলে সংরক্ষণ করুন এবং আরও অনেক কিছু।
libvips দিয়ে শুরু করা
নিম্নলিখিত কমান্ড ব্যবহার করে সর্বশেষ উত্স ক্লোন করুন।
git কমান্ডের মাধ্যমে libvips ইনস্টল করুন
git clone git://github.com/libvips/libvips.git
গিট থেকে তৈরি করতে আরও প্যাকেজ প্রয়োজন, আপনার অন্তত gtk-doc এবং gobject-আত্মদর্শন প্রয়োজন।
git কমান্ডের মাধ্যমে libvips প্যাকেজ ইনস্টল করুন
./autogen.sh
make
sudo make install
C++ API এর মাধ্যমে দ্রুত চিত্র রেন্ডারিং
libvips লাইব্রেরি সমস্ত নেতৃস্থানীয় প্ল্যাটফর্মে দ্রুত ইমেজ তৈরি এবং ম্যানিপুলেশনের জন্য কার্যকারিতা প্রদান করেছে। কিছু নেতৃস্থানীয় ইমেজ প্রসেসিং লাইব্রেরি যেমন ImageMagick এবং GD লাইব্রেরিগুলি খুব শক্তিশালী এবং ছবিগুলির সাথে কাজ করার জন্য উন্নত বৈশিষ্ট্যগুলি প্রদান করে কিন্তু ছবিগুলি প্রক্রিয়াকরণের জন্য প্রচুর পরিমাণে মেমরির প্রয়োজন হয়৷ অন্যদিকে, libvips কার্যত ImageMagick-এর মতো একই অ্যাক্টিভ করতে পারে, কিন্তু অনেক দ্রুত এবং তুলনামূলকভাবে ছোট মেমরি ফুটপ্রিন্ট সহ
অন্যান্য সমর্থিত ফরম্যাটে ছবি সংরক্ষণ করুন
ওপেন সোর্স libvips লাইব্রেরি এমন এক সেট অপারেশন প্রদান করেছে যা বিভিন্ন ফরম্যাটে ছবি লোড ও সংরক্ষণ করে। লাইব্রেরিতে TIFF, JPEG, PNG, Analyze, PPM, OpenEXR, CSV, Matlab, Radiance, RAW, FITS, WebP, SVG, PDF, GIF, এবং VIPS-এর মতো জনপ্রিয় ফর্ম্যাটে ছবি সংরক্ষণের জন্য অন্তর্নির্মিত সমর্থন অন্তর্ভুক্ত করা হয়েছে। VipsForeign বিভিন্ন ফরম্যাটে ছবি লোড এবং সংরক্ষণ করতে ব্যবহার করা যেতে পারে।
C++ API এর মাধ্যমে মেমরিতে ছবি পড়ুন এবং লিখুন
int
main( int argc, char **argv )
{
gchar *buf;
gsize len;
int i;
if( VIPS_INIT( argv[0] ) )
vips_error_exit( NULL );
if( argc != 2 )
vips_error_exit( "usage: %s FILENAME", argv[0] );
if( !g_file_get_contents( argv[1], &buf, &len, NULL ) )
vips_error_exit( NULL );
for( i = 0; i < 10; i++ ) {
VipsImage *image;
void *new_buf;
size_t new_len;
printf( "loop %d ...\n", i );
if( !(image = vips_image_new_from_buffer( buf, len, "",
"access", VIPS_ACCESS_SEQUENTIAL,
NULL )) )
vips_error_exit( NULL );
if( vips_image_write_to_buffer( image,
".jpg", &new_buf, &new_len,
"Q", 95,
NULL ) )
vips_error_exit( NULL );
g_object_unref( image );
g_free( new_buf );
}
g_free( buf );
vips_shutdown();
return( 0 );
}
দ্রুত ইমেজ রিসাইজ করা
ওপেন সোর্স libvips লাইব্রেরি সফ্টওয়্যার ডেভেলপারদের তাদের নিজস্ব অ্যাপের মধ্যে ফ্লাইতে ইমেজ রিসাইজ করার ক্ষমতা দেয়। প্রথমে, আপনাকে একটি ছবির নাম এবং সম্পূর্ণ ঠিকানা প্রদান করে ইমেজ রিপোজিটরি থেকে ছবিটি লোড করতে হবে। এর পরে, আপনি আপনার প্রয়োজন অনুসারে নির্দিষ্ট প্রস্থ এবং উচ্চতায় এটির আকার পরিবর্তন করতে পারেন। এর পরে, আপনি এটিকে নতুন আকারের সাথে আপনার পছন্দের অবস্থান সংরক্ষণ করতে পারেন।
C++ API এর মাধ্যমে মেমরিতে ছবি পড়ুন এবং লিখুন
int
vips_resize( VipsImage *in, VipsImage **out,
double scale, ... )
{
va_list ap;
int result;
va_start( ap, scale );
result = vips_call_split( "resize", ap, in, out, scale );
va_end( ap );
return( result );
}
C++ API এর মাধ্যমে ছবি ফিল্টারিং
ইমেজ ফিল্টারিং একটি মূল্যবান বৈশিষ্ট্য যা সারা বিশ্বে বিভিন্ন ইমেজ প্রসেসিং এবং কম্পিউটার ভিশন অ্যাপ্লিকেশনে ব্যবহৃত হয়। libvips লাইব্রেরি C++ কমান্ডের মাধ্যমে ইমেজ ফিল্টারিংয়ের জন্য সম্পূর্ণ সমর্থন প্রদান করে। মসৃণ করা, তীক্ষ্ণ করা এবং প্রান্ত বর্ধিতকরণের মতো বৈশিষ্ট্যগুলি ফিল্টারিংয়ের সাথে বাস্তবায়িত চিত্র প্রক্রিয়াকরণ ক্রিয়াকলাপের কিছু উদাহরণ। লাইব্রেরিতে পিএনজি ফিল্টারগুলিও অন্তর্ভুক্ত রয়েছে যেমন বাম দিকের পার্থক্য, বাম এবং উপরে গড়, অভিযোজিত, স্বয়ংক্রিয়ভাবে সেরা প্রতিবেশী ভবিষ্যদ্বাণী বাছাই এবং কোনও ফিল্টারিং নেই৷ এটিতে আমদানি ফিল্টারগুলিও রয়েছে যা libMagick এবং OpenSlide-এর সাথে লোড করতে পারে।