Como editar imagens com C++ e ImageMagick

A API Magick++ é a API C++ orientada a objetos para a biblioteca de processamento de imagem ImageMagick.


Como editar imagens com C++ e ImageMagick


🔊 A API Magick++ é a API C++ orientada a objetos para a biblioteca de processamento de imagem ImageMagick.

Magick++ suporta um modelo de objeto inspirado em PerlMagick . As imagens oferecem suporte à contagem de referência implícita para que os construtores de cópia e a atribuição incorram em quase nenhum custo.

O custo de copiar uma imagem (se necessário) é feito logo antes da modificação e esta cópia é gerenciada automagicamente pelo Magick++. As cópias desreferenciadas são excluídas automaticamente. Os objetos de imagem oferecem suporte à semântica de valor (em vez de ponteiro), portanto, é trivial oferecer suporte a várias gerações de uma imagem na memória ao mesmo tempo.


Assista ao Vídeo


Códigos utilizados no vídeo

Instalação no Ubuntu:

sudo apt install imagemagick libmagick++-dev graphicsmagick-libmagick-dev-compat

Para Instalar no Windows ou outras distros e sistemas operacionais, veja os links abaixo:


Exemplo 01 - Criar uma imagem e desenhar e pintar um círculo no centro

#include <Magick++.h>

int main(){
  Magick::InitializeMagick("");

  Magick::Image image(Magick::Geometry(800, 600), Magick::Color("white"));

  Magick::DrawableCircle circle(400, 300, 500, 300);
  image.fillColor("green");
  image.draw(circle);
  image.write("circulo_verde.png");

  return 0;
}

Para compilar e rodar:

g++ `Magick++-config --cxxflags --cppflags` -O2 -o 01 main.cpp `Magick++-config --ldflags --libs`)
./01

Exemplo 02 - Recortar região de uma imagem

Imagem utilizada nesse exemplo 02: langs.png

#include <Magick++.h>

int main(){
  Magick::InitializeMagick("");

  Magick::Image image;

  image.read("./langs.png");

  image.crop(Magick::Geometry(219, 147, 409, 272));

  image.write("php.jpg");

  return 0;
}

Exemplo 03 - Converter imagem WEBP para JPG

Imagem utilizada nesse exemplo 03: The-man-image.webp

#include <Magick++.h>

int main(){
  Magick::InitializeMagick("");

  Magick::Image image;

  image.read("./The-man-image.webp");

  image.write("Bjarne Stroustrup.jpg");

  return 0;
}

Exemplo 04 - Desenhando texto na imagem

Fonte utilizada: font.ttf

#include <Magick++.h>

int main(){
  Magick::InitializeMagick("");

  Magick::Image image;

  image.read("./Bjarne Stroustrup.jpg");
  image.font("./font.ttf");
  image.fillColor(Magick::Color("yellow"));
  image.strokeColor(Magick::Color("black"));
  image.fontPointsize(30);

  image.draw(Magick::DrawableText(50, 300, "Bjarne Stroustrup"));

  image.write("image_com_texto.png");

  return 0;
}

Links úteis e documentação


cpp multimidia


Compartilhe


Nosso canal no Youtube

Inscreva-se


Marcos Oliveira

Marcos Oliveira

Desenvolvedor de software
https://github.com/terroo


Crie Aplicativos Gráficos para Linux e Windows com C++

Aprenda C++ Moderno e crie Games, Programas CLI, GUI e TUI de forma fácil.

Saiba Mais

Receba as novidades no seu e-mail!

Após cadastro e confirmação do e-mail, enviaremos semanalmente resumos e também sempre que houver novidades por aqui para que você mantenha-se atualizado!