C++ . के लिए ओपन सोर्स तेज़ इमेज प्रोसेसिंग लाइब्रेरी
लोकप्रिय छवि प्रारूप बनाएं, हेरफेर करें, ड्रा करें, विभाजित करें, कॉपी करें और कनवर्ट करें; फ़िल्टर लागू करें, दो छवियों को विभाजित करें, मुफ़्त C++ लाइब्रेरी के माध्यम से एक छवि को ग्रिड करें।
libvips एक खुला स्रोत उन्नत छवि प्रसंस्करण पुस्तकालय है जो बहुत कम स्मृति का उपयोग करता है और बहुत तेज संचालन करता है। पुस्तकालय बड़ी छवियों को आसानी से संभाल सकता है और JPEG, TIFF, PNG, WebP, HEIC, FITS, Matlab, OpenEXR, PDF, SVG, HDR, PPM / PGM / PFM, CSV, GIF जैसे छवि फ़ाइल स्वरूपों की एक सभ्य श्रेणी का समर्थन करता है। , विश्लेषण करें, निफ़्टी, डीपज़ूम, और ओपनस्लाइड। यह इमेजमैजिक या ग्राफिक्समैजिक के माध्यम से छवियों को आसानी से लोड कर सकता है, जिससे यह डीआईसीओएम जैसे प्रारूपों के साथ काम कर सकता है।
libvips प्राइमेटिव को समझदारी से लागू किया जाता है और रन-टाइम कोड जनरेशन जैसी कुछ तकनीकों का उपयोग छवियों के त्वरित प्रसंस्करण में मदद करता है। अन्य इमेज प्रोसेसिंग लाइब्रेरी की तुलना में, यह नोट किया गया था कि libvips को कम RAM की आवश्यकता होती है और विशेष रूप से कई CPU वाली मशीनों पर तेजी से चलती है। यह मुख्य रूप से उस बुद्धिमान वास्तुकला के कारण है जिसका उपयोग यह छवि वर्कफ़्लो को स्वचालित रूप से विभाजित करता है।
पुस्तकालय साधारण 8-बिट इंट से जटिल 128-बिट तक, संख्यात्मक प्रकारों की एक विशाल श्रृंखला के लिए समर्थन प्रदान करता है। अधिकांश इमेज प्रोसेसिंग लाइब्रेरी थ्रेडेड ऑपरेशंस का उपयोग करते हैं लेकिन दूसरी ओर libvips थ्रेडिंग को इमेज IO सिस्टम में डालते हैं और इस पर काम करने के लिए प्रत्येक थ्रेड को पूरी इमेज पाइपलाइन की एक कॉपी असाइन करते हैं। यह क्षैतिज थ्रेडिंग शैली प्रोसेसर कैश का बेहतर उपयोग करती है और लॉकिंग को कम करती है।
लिबविप्स लाइब्रेरी एक इमेज प्रोसेसिंग लाइब्रेरी है जो कई अन्य पुस्तकालयों की तुलना में बेहतर प्रदर्शन प्रदान करती है। पुस्तकालय ने कई महत्वपूर्ण छवि प्रसंस्करण सुविधाओं के लिए समर्थन प्रदान किया है जैसे कि चित्र बनाना, दो छवियों को विभाजित करना, एक छवि पर एक वृत्त खींचना, एक छवि की प्रतिलिपि बनाना, एक छवि को दूसरी छवि में चित्रित करना, एक छवि पर एक रेखा खींचना, एक छवि कास्टिंग करना, कैशे एक छवि, दो छवियां जोड़ें, एक गाऊसी छवि बनाएं, एक छवि से एक बिंदु पढ़ें, एक छवि ग्रिड करें, छवि को जेपीईजी फ़ाइल में सहेजें और बहुत कुछ।
लिबविप्स के साथ शुरुआत करना
निम्न आदेश का उपयोग करके नवीनतम स्रोतों को क्लोन करें।
गिट कमांड के माध्यम से libvips स्थापित करें
git clone git://github.com/libvips/libvips.git
git से निर्माण के लिए अधिक पैकेज की आवश्यकता होती है, आपको कम से कम gtk-doc और gobject-introspection की आवश्यकता होगी।
गिट कमांड के माध्यम से libvips पैकेज स्थापित करें
./autogen.sh
make
sudo make install
C++ API के माध्यम से तेज़ इमेज रेंडरिंग
लिबविप्स लाइब्रेरी ने सभी प्रमुख प्लेटफार्मों पर तेजी से छवि निर्माण और हेरफेर के लिए कार्यक्षमता प्रदान की है। कुछ प्रमुख इमेज प्रोसेसिंग लाइब्रेरी जैसे इमेजमैजिक और जीडी लाइब्रेरी बहुत शक्तिशाली हैं और छवियों के साथ काम करने के लिए उन्नत सुविधाएँ प्रदान करते हैं लेकिन छवियों को संसाधित करने के लिए बड़ी मात्रा में मेमोरी की आवश्यकता होती है। दूसरी ओर, libvips वस्तुतः ImageMagick के समान ही सक्रिय कार्य कर सकता है, लेकिन बहुत तेज़ और तुलनात्मक रूप से छोटी मेमोरी फ़ुटप्रिंट के साथ
छवि को अन्य समर्थित स्वरूपों में सहेजें
ओपन सोर्स लिबविप्स लाइब्रेरी ने संचालन का एक सेट प्रदान किया है जो विभिन्न स्वरूपों में छवियों को लोड और सहेजता है। पुस्तकालय में TIFF, JPEG, PNG, विश्लेषण, 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 );
}
तेज़ छवि का आकार बदलना
ओपन सोर्स लिबविप्स लाइब्रेरी सॉफ्टवेयर डेवलपर्स को अपने ऐप्स के अंदर फ्लाई पर छवियों का आकार बदलने की शक्ति देती है। सबसे पहले, आपको इमेज का नाम और पूरा पता प्रदान करके इमेज रिपॉजिटरी से इमेज को लोड करना होगा। उसके बाद, आप इसे अपनी आवश्यकताओं के अनुसार निर्दिष्ट चौड़ाई और ऊंचाई में आकार बदल सकते हैं। उसके बाद, आप इसे अपनी पसंद के स्थान को नए आकार के साथ सहेज सकते हैं।
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 );
}
सी ++ एपीआई के माध्यम से छवि फ़िल्टरिंग
छवि फ़िल्टरिंग एक मूल्यवान विशेषता है जिसका उपयोग दुनिया भर में विभिन्न छवि प्रसंस्करण और कंप्यूटर दृष्टि अनुप्रयोगों में किया जाता है। libvips पुस्तकालय सी++ कमांड के माध्यम से छवि फ़िल्टरिंग के लिए पूर्ण समर्थन प्रदान करता है। स्मूथिंग, शार्पनिंग और एज एन्हांसमेंट जैसी सुविधाएँ फ़िल्टरिंग के साथ कार्यान्वित इमेज प्रोसेसिंग ऑपरेशन के कुछ उदाहरण हैं। पुस्तकालय में पीएनजी फिल्टर भी शामिल हैं जैसे बाईं ओर अंतर, बाएं और ऊपर का औसत, अनुकूली, स्वचालित रूप से सर्वश्रेष्ठ पड़ोसी भविष्यवक्ता चुनें, और कोई फ़िल्टरिंग नहीं। इसमें आयात फ़िल्टर भी शामिल हैं जो libMagick और OpenSlide के साथ लोड हो सकते हैं।