ImageMagick
Mở Thư viện nguồn C để tạo và chuyển đổi hình ảnh
Tạo, chỉnh sửa, soạn, đọc và chuyển đổi hình ảnh Bitmap bằng C API miễn phí. Nó cho phép thay đổi kích thước, lật, phản chiếu, xoay, bóp méo, cắt và biến đổi hình ảnh bên trong ứng dụng C.
ImageMagick là một thư viện mã nguồn mở cung cấp cho các nhà phát triển phần mềm sức mạnh để đưa các khả năng xử lý hình ảnh vào bên trong các ứng dụng C của riêng họ. Thư viện đa nền tảng và có thể chạy trơn tru trên Linux, Windows, Mac Os X, iOS, Android OS và nhiều hệ điều hành khác. Nó bao gồm hỗ trợ đọc, hiển thị, tạo, chuyển đổi, sửa đổi và sửa đổi hình ảnh raster bằng cách sử dụng mã C.
Một tính năng tuyệt vời của ImageMagick là khả năng chuyển đổi hình ảnh chính xác và chuyên nghiệp giữa các định dạng tệp hàng đầu khác nhau. Thư viện đã hỗ trợ hơn 200 định dạng tệp hình ảnh như JPEG, PNG, GIF, HEIC, Exif, TIFF, CGM, DPX, EXR, WebP, Postscript, PDF, SVG và nhiều định dạng khác. Thư viện cũng đã cung cấp hỗ trợ vẽ cũng như đồ họa và đồ họa hoạt hình một cách dễ dàng.
Thư viện rất giàu tính năng và đã bao gồm hỗ trợ cho một số tính năng xử lý hình ảnh phổ biến như thay đổi kích thước và lật hình ảnh, phản chiếu và xoay hình ảnh, làm biến dạng, chuyển đổi hình ảnh, điều chỉnh màu sắc hình ảnh, áp dụng các hiệu ứng đặc biệt khác nhau làm mờ hoặc làm sắc nét hoặc ngưỡng, độ dốc hình ảnh , phát hiện cạnh bất thường vẽ văn bản, đường thẳng, đa giác, hình elip, sử dụng biểu thức toán học và nhiều hơn nữa. Gần đây, thư viện cũng đã bao gồm hỗ trợ trích xuất văn bản từ hình ảnh bằng OCR.
Bắt đầu với ImageMagick
Sao chép các nguồn mới nhất bằng cách sử dụng lệnh sau
Cài đặt ImageMagick qua GitHub.
git clone https://github.com/ImageMagick/ImageMagick.git
Hoặc sử dụng lệnh sau để cài đặt nó.
Cài đặt ImageMagick qua RPM.
$ rpm -Uvh ImageMagick-libs-7.0.10-60.x86_64.rpm
Chuyển đổi hình ảnh sang các định dạng khác
Thư viện mã nguồn mở ImageMagick cho phép các nhà lập trình phần mềm chuyển đổi hình ảnh sang các định dạng tệp được hỗ trợ khác trong ứng dụng của riêng họ. Người dùng cần cung cấp thông số định dạng trước khi chuyển đổi sang định dạng khác. Thư viện chuyển đổi nội bộ hình ảnh sang các định dạng khác trước đó, trước khi áp dụng các phép biến đổi. Thư viện hỗ trợ chuyển đổi sang một số định dạng hình ảnh phổ biến như định dạng BMP, CMYK, GIF, JPEG, PBM, PNG, RGB, SVG, TIFF và XPM. Một khía cạnh tuyệt vời của thư viện là dễ sử dụng trong khi chuyển đổi hình ảnh. Nó cũng cung cấp khả năng giảm kích thước của hình ảnh và áp dụng các hiệu ứng khác nhau trước khi viết nó ở định dạng mong muốn.
Chuyển GIF sang JPEG Image thông qua 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;
}
Hỗ trợ chất lượng hình ảnh bằng C API
Thư viện C mã nguồn mở ImageMagick cho phép các nhà phát triển phần mềm tạo ra các chuyển sắc ảnh của nhiều màu sắc bằng cách sử dụng các lệnh C. Bạn có thể dễ dàng tạo sự pha trộn dần dần của một hoặc nhiều màu bằng cách sử dụng các hình dạng ngang, dọc, hình tròn hoặc hình elip. Thư viện đã nâng cao các gradient thông qua việc sử dụng một số định nghĩa như chỉ định hướng của gradient tuyến tính, Xác định tọa độ của điểm trung tâm cho gradient xuyên tâm, Hạn chế gradient ở một vùng lớn hơn hoặc nhỏ hơn kích thước hình ảnh, v.v. trên. Hơn nữa, đối với các gradient thang độ xám phi tuyến tính, vui lòng thêm màu xám-không gian màu RGB-không gian màu xám trước khi lưu đầu ra.
Tạo ra một Gradient Grayscale đơn giản thông qua 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();
}
Áp dụng Hiệu ứng Đặc biệt cho Hình ảnh qua C
Thư viện mã nguồn mở ImageMagick đã cung cấp chức năng áp dụng các loại hiệu ứng khác nhau cho hình ảnh. Nó đã cung cấp một số chức năng quan trọng như làm mờ, làm sắc nét, tạo ngưỡng, tạo bóng, làm mờ các hình dạng hoặc nhuộm màu cho hình ảnh bằng cách sử dụng một vài dòng mã C. Có một số hiệu ứng làm mờ đặc biệt như làm mờ sóng radio và làm mờ chuyển động cũng được hỗ trợ.
Áp dụng hiệu ứng Font Filed by 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");
Hỗ trợ hình ảnh lớn
Thư viện C ImageMagick đã cung cấp hỗ trợ để làm việc với các hình ảnh rất lớn. Nó cho phép các nhà phát triển mở, đọc, xử lý hoặc ghi hình ảnh lên đến kích thước Mega-, Giga- hoặc Tera-pixel bên trong các ứng dụng xử lý hình ảnh của riêng họ. Thư viện cho phép thay đổi kích thước hình ảnh thành một phần tư triệu pixel vuông. Trong khi làm việc với hình ảnh lớn, bạn cần đảm bảo sự sẵn có của tài nguyên bộ nhớ lớn. Nếu phân vùng đĩa tạm thời mặc định nhỏ, hãy hướng dẫn ImageMagick sử dụng một phân vùng khác có đủ dung lượng trống.