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

Previous Next

เริ่มต้นใช้งาน 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 ใช้พาร์ติชั่นอื่นที่มีเนื้อที่ว่างเพียงพอ

 ไทย