ImageMagick
Biblioteca C de código aberto para criar e converter imagens
Crie, edite, componha, leia e converta imagens de bitmap usando a API C gratuita. Ele permite redimensionar, inverter, espelhar, girar, distorcer, cisalhar e transformar imagens dentro de aplicativos C.
O ImageMagick é uma biblioteca de código aberto que dá aos desenvolvedores de software o poder de incluir recursos de processamento de imagem dentro de seus próprios aplicativos C. A biblioteca é multiplataforma e pode ser executada sem problemas em Linux, Windows, Mac Os X, iOS, Android OS e muitos outros. Ele incluiu suporte para leitura, exibição, criação, conversão, modificação e modificação de imagens raster usando código C.
Um ótimo recurso do ImageMagick é sua capacidade de converter imagens com precisão e profissionalismo entre os diferentes formatos de arquivo líderes. A biblioteca inclui suporte para mais de 200 formatos de arquivo de imagem, como JPEG, PNG, GIF, HEIC, Exif, TIFF, CGM, DPX, EXR, WebP, Postscript, PDF, SVG e muitos mais. A biblioteca também forneceu suporte para desenho, bem como gráficos e gráficos animados com facilidade.
A biblioteca é muito rica em recursos e inclui suporte para alguns recursos comuns de processamento de imagem, como redimensionamento e inversão de imagem, espelhamento e rotação de imagem, distorção, transformação de imagens, ajuste de cores de imagem, aplicação de vários efeitos especiais de desfoque ou nitidez ou limite, gradientes de imagem , detecção de borda inteligente desenha texto, linhas, polígonos, elipses, usando expressão matemática e muito mais. Recentemente, a biblioteca também incluiu suporte para extrair texto de imagens usando OCR.
Introdução ao ImageMagick
Clone as fontes mais recentes usando o seguinte comando
Instale o ImageMagick via GitHub.
git clone https://github.com/ImageMagick/ImageMagick.git
Ou use o seguinte comando para instalá-lo.
Instale o ImageMagick via RPM.
$ rpm -Uvh ImageMagick-libs-7.0.10-60.x86_64.rpm
Converter imagem para outros formatos
A biblioteca C de código aberto ImageMagick permite que programadores de software convertam imagens para outros formatos de arquivo suportados dentro de seus próprios aplicativos. Os usuários precisam fornecer o parâmetro de formato antes de converter para outro formato. A biblioteca converte internamente a imagem para outros formatos anteriormente, antes de aplicar as transformações. A biblioteca suporta a conversão para vários formatos de imagem populares, como os formatos BMP, CMYK, GIF, JPEG, PBM, PNG, RGB, SVG, TIFF e XPM. Um grande aspecto da biblioteca é a facilidade de uso ao converter a imagem. Ele também oferece a capacidade de reduzir o tamanho da imagem e aplicar efeitos diferentes antes de escrevê-la no formato desejado.
Converter GIF para JPEG Imagem via 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;
}
Suporte a gradientes de imagem usando a API C
A biblioteca C de código aberto ImageMagick permite que os desenvolvedores de software criem gradientes de imagem de várias cores usando comandos C. Você pode criar facilmente uma mistura gradual de uma ou várias cores usando formas horizontais, verticais, circulares ou elípticas. A biblioteca aprimorou os gradientes através do uso de vários –define como especificar a direção do gradiente linear, identificar as coordenadas do ponto central para o gradiente radial, restringir o gradiente a uma região maior ou menor que as dimensões da imagem e assim sobre. Além disso, para gradientes de escala de cinza não lineares, adicione -colorspace RGB -colorspace gray antes de salvar a saída.
Criar um gradiente de escala simples através de 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();
}
Aplicar efeitos especiais a imagens via C
A biblioteca C de código aberto ImageMagick forneceu funcionalidade para aplicar diferentes tipos de efeitos a imagens. Ele forneceu várias funções importantes, como desfoque, nitidez, limiar, criação de sombras, enevoamento de formas ou tingimento de uma imagem usando algumas linhas de código C. Há alguns efeitos especiais de desfoque, como desfoque de rádio e desfoque de movimento, também são suportados.
Aplicar Efeito de Font Filed via 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");
Suporte para imagens grandes
A biblioteca C ImageMagick forneceu suporte para trabalhar com imagens muito grandes. Ele permite que os desenvolvedores abram, leiam, processem ou gravem imagens com tamanhos de até Mega, Giga ou Tera-pixel dentro de seus próprios aplicativos de processamento de imagem. A biblioteca permite redimensionar uma imagem para um quadrado de um quarto de milhão de pixels. Ao trabalhar com imagens grandes, você precisa garantir a disponibilidade de grandes recursos de memória. Se a partição de disco temporária padrão for pequena, oriente o ImageMagick para usar outra partição com uma quantidade suficiente de espaço livre.