ImageMagick
Open Source C Library เพื่อสร้างและแปลงรูปภาพ
สร้าง แก้ไข เขียน อ่าน และแปลงภาพบิตแมปโดยใช้ C API ฟรี อนุญาตให้ปรับขนาด พลิก มิเรอร์ หมุน บิดเบือน เฉือน และแปลงรูปภาพภายในแอป C
ImageMagick เป็นไลบรารีโอเพ่นซอร์สที่ช่วยให้นักพัฒนาซอฟต์แวร์สามารถรวมความสามารถในการประมวลผลภาพไว้ในแอปพลิเคชัน C ของตนเองได้ ไลบรารีเป็นแบบข้ามแพลตฟอร์มและสามารถทำงานได้อย่างราบรื่นบน Linux, Windows, Mac Os X, iOS, Android OS และอื่นๆ อีกมากมาย รวมถึงรองรับการอ่าน การแสดง การสร้าง การแปลง การแก้ไข และการแก้ไขภาพแรสเตอร์โดยใช้โค้ด C
ฟีเจอร์ที่ยอดเยี่ยมอย่างหนึ่งของ ImageMagick คือความสามารถในการแปลงรูปภาพระหว่างรูปแบบไฟล์ชั้นนำต่างๆ ได้อย่างแม่นยำและเป็นมืออาชีพ ไลบรารีรองรับรูปแบบไฟล์ภาพมากกว่า 200 รูปแบบ เช่น JPEG, PNG, GIF, HEIC, Exif, TIFF, CGM, DPX, EXR, WebP, Postscript, PDF, SVG และอื่นๆ อีกมากมาย ห้องสมุดยังให้การสนับสนุนการวาดภาพตลอดจนกราฟิกและกราฟิกแอนิเมชั่นได้อย่างง่ายดาย
ไลบรารีมีคุณลักษณะมากมายและได้รวมการสนับสนุนสำหรับคุณสมบัติการประมวลผลภาพทั่วไปบางอย่าง เช่น การปรับขนาดและการพลิกภาพ การสะท้อนและการหมุนภาพ การบิดเบือน การเปลี่ยนภาพ การปรับสีของภาพ การใช้เอฟเฟกต์พิเศษต่างๆ การเบลอหรือการเพิ่มความคมชัดหรือขีดจำกัด การไล่ระดับสีของภาพ , การตรวจจับขอบที่ชาญฉลาด วาดข้อความ เส้น รูปหลายเหลี่ยม วงรี โดยใช้นิพจน์ทางคณิตศาสตร์ และอื่นๆ อีกมากมาย เมื่อเร็ว ๆ นี้ไลบรารีได้รวมการรองรับการดึงข้อความจากรูปภาพโดยใช้ OCR
เริ่มต้นใช้งาน ImageMagick
โคลนแหล่งล่าสุดโดยใช้คำสั่งต่อไปนี้
ติดตั้ง ImageMagick ผ่าน GitHub
git clone https://github.com/ImageMagick/ImageMagick.git
หรือใช้คำสั่งต่อไปนี้เพื่อติดตั้ง
ติดตั้ง ImageMagick ผ่าน RPM
$ rpm -Uvh ImageMagick-libs-7.0.10-60.x86_64.rpm
แปลงรูปภาพเป็นรูปแบบอื่น
ImageMagick ไลบรารี C แบบโอเพ่นซอร์สช่วยให้โปรแกรมเมอร์ซอฟต์แวร์แปลงรูปภาพเป็นรูปแบบไฟล์อื่นที่รองรับภายในแอพของตนเองได้ ผู้ใช้จำเป็นต้องระบุพารามิเตอร์รูปแบบก่อนที่จะแปลงเป็นรูปแบบอื่น ไลบรารีจะแปลงรูปภาพเป็นการภายในเป็นรูปแบบอื่นก่อนหน้านี้ ก่อนที่จะใช้การแปลง ไลบรารีรองรับการแปลงเป็นรูปแบบภาพยอดนิยมหลายรูปแบบ เช่น BMP, CMYK, GIF, JPEG, PBM, PNG, RGB, SVG, TIFF และ XPM ข้อดีอย่างหนึ่งของไลบรารีคือความง่ายในการใช้งานขณะแปลงรูปภาพ นอกจากนี้ยังให้ความสามารถในการลดขนาดของภาพและใช้เอฟเฟกต์ต่างๆ ก่อนเขียนในรูปแบบที่ต้องการ
แปลง GIF เป็น JPEG ภาพผ่าน ImageMagick
#include
using namespace std;
using namespace Magick;
int main(int argc,char **argv)
{
InitializeMagick(*argv);
// Read GIF file from disk
Image image( "giraffe.gif" );
// Write to BLOB in JPEG format
Blob blob;
image.magick( "JPEG" ) // Set JPEG output format
image.write( &blob );
[ Use BLOB data (in JPEG format) here ]
return 0;
}
รองรับการไล่ระดับสีรูปภาพโดยใช้ C API
ImageMagick ไลบรารี C แบบโอเพ่นซอร์สช่วยให้นักพัฒนาซอฟต์แวร์สร้างการไล่ระดับสีของรูปภาพได้หลายสีโดยใช้คำสั่ง C คุณสามารถสร้างการผสมสีทีละน้อยหรือหลายสีได้อย่างง่ายดายโดยใช้รูปร่างแนวนอน แนวตั้ง วงกลม หรือวงรี ไลบรารีได้ปรับปรุงการไล่ระดับสีผ่านการใช้หลาย -defines เช่น การระบุทิศทางของการไล่ระดับสีเชิงเส้น การระบุพิกัดของจุดศูนย์กลางสำหรับการไล่ระดับสีในแนวรัศมี การจำกัดการไล่ระดับสีในพื้นที่ที่ใหญ่กว่าหรือเล็กกว่าขนาดภาพ เป็นต้น บน. นอกจากนี้ สำหรับการไล่ระดับสีเทาที่ไม่ใช่เชิงเส้น โปรดเพิ่ม -colorspace RGB -colorspace grey ก่อนบันทึกผลลัพธ์
สร้างการไล่ระดับสีเทาที่เรียบง่ายผ่าน C API
void test_wand(LPTSTR lpCmdLine)
{
MagickWand *m_wand = NULL;
PixelWand *p_wand = NULL;
PixelIterator *iterator = NULL;
PixelWand **pixels = NULL;
int x,y,gray;
char hex[128];
MagickWandGenesis();
p_wand = NewPixelWand();
PixelSetColor(p_wand,"white");
m_wand = NewMagickWand();
// Create a 100x100 image with a default of white
MagickNewImage(m_wand,100,100,p_wand);
// Get a new pixel iterator
iterator=NewPixelIterator(m_wand);
for(y=0;y<100;y++) {
// Get the next row of the image as an array of PixelWands
pixels=PixelGetNextIteratorRow(iterator,&x);
// Set the row of wands to a simple gray scale gradient
for(x=0;x<100;x++) {
gray = x*255/100;
sprintf(hex,"#%02x%02x%02x",gray,gray,gray);
PixelSetColor(pixels[x],hex);
}
// Sync writes the pixels back to the m_wand
PixelSyncIterator(iterator);
}
MagickWriteImage(m_wand,"bits_demo.gif");
// Clean up
iterator=DestroyPixelIterator(iterator);
DestroyMagickWand(m_wand);
MagickWandTerminus();
}
ใช้เอฟเฟกต์พิเศษกับรูปภาพผ่านC
ImageMagick ไลบรารี C แบบโอเพ่นซอร์สมีฟังก์ชันสำหรับการใช้เอฟเฟกต์ประเภทต่างๆ กับรูปภาพ มีฟังก์ชันที่สำคัญหลายอย่าง เช่น การเบลอ การเพิ่มความคมชัด ขีด จำกัด การสร้างเงา รูปร่างขนนก หรือการย้อมสีภาพโดยใช้โค้ด C สองสามบรรทัด นอกจากนี้ยังรองรับเอฟเฟกต์การเบลอแบบพิเศษ เช่น การเบลอด้วยคลื่นวิทยุและการเคลื่อนไหวเบลอ
ใช้ผล แบบอักษร ยื่นผ่าน C API
magick_wand = NewMagickWand();
d_wand = NewDrawingWand();
p_wand = NewPixelWand();
set_tile_pattern(d_wand,"#check","pattern:checkerboard");
PixelSetColor(p_wand,"lightblue");
// Create a new transparent image
MagickNewImage(magick_wand,320,100,p_wand);
// Set up a 72 point font
DrawSetFont (d_wand, "Verdana-Bold-Italic" ) ;
DrawSetFontSize(d_wand,72);
// Now draw the text
DrawAnnotation(d_wand,28,68,"Magick");
// Draw the image on to the magick_wand
MagickDrawImage(magick_wand,d_wand);
// Trim the image
MagickTrimImage(magick_wand,0);
// Add a transparent border
PixelSetColor(p_wand,"lightblue");
MagickBorderImage(magick_wand,p_wand,5,5);
// and write it
MagickWriteImage(magick_wand,"text_pattern.png");
รองรับรูปภาพขนาดใหญ่
ImageMagick ไลบรารี C ให้การสนับสนุนการทำงานกับรูปภาพขนาดใหญ่มาก ช่วยให้นักพัฒนาสามารถเปิด อ่าน ประมวลผล หรือเขียนภาพขนาดสูงสุด Mega-, Giga- หรือ Tera-pixel ภายในแอพพลิเคชั่นประมวลผลภาพของตนเองได้ ห้องสมุดอนุญาตให้ปรับขนาดรูปภาพเป็นสี่เหลี่ยมจัตุรัสล้านพิกเซล ในขณะที่ทำงานกับอิมเมจขนาดใหญ่ คุณต้องแน่ใจว่ามีทรัพยากรหน่วยความจำขนาดใหญ่พร้อมใช้งาน หากพาร์ติชั่นดิสก์ชั่วคราวเริ่มต้นมีขนาดเล็ก แนะนำให้ ImageMagick ใช้พาร์ติชั่นอื่นที่มีเนื้อที่ว่างเพียงพอ