ImageMagick
Open-Source-C-Bibliothek zum Erstellen und Konvertieren von Bildern
Erstellen, bearbeiten, erstellen, lesen und konvertieren Sie Bitmap-Bilder mit der kostenlosen C-API. Es ermöglicht das Ändern der Größe, Spiegeln, Drehen, Verzerren, Scheren und Transformieren von Bildern in C-Apps.
ImageMagick ist eine Open-Source-Bibliothek, die Softwareentwicklern die Möglichkeit gibt, Bildverarbeitungsfunktionen in ihre eigenen C-Anwendungen einzubinden. Die Bibliothek ist plattformübergreifend und kann problemlos unter Linux, Windows, Mac OS X, iOS, Android OS und vielen anderen ausgeführt werden. Es hat Unterstützung für das Lesen, Anzeigen, Erstellen, Konvertieren, Modifizieren und Modifizieren von Rasterbildern mit C-Code enthalten.
Ein großartiges Feature von ImageMagick ist seine Fähigkeit, Bilder genau und professionell zwischen verschiedenen führenden Dateiformaten zu konvertieren. Die Bibliothek unterstützt über 200 Bilddateiformate wie JPEG, PNG, GIF, HEIC, Exif, TIFF, CGM, DPX, EXR, WebP, Postscript, PDF, SVG und viele mehr. Die Bibliothek hat auch Unterstützung für das Zeichnen sowie für Grafiken und animierte Grafiken mit Leichtigkeit bereitgestellt.
Die Bibliothek ist sehr funktionsreich und bietet Unterstützung für einige gängige Bildverarbeitungsfunktionen wie Bildgrößenänderung und -spiegelung, Bildspiegelung und -rotation, Verzerren, Transformieren von Bildern, Bildfarbenanpassung, Anwenden verschiedener Spezialeffekte, Unschärfe oder Schärfe oder Schwellenwert, Bildverläufe , schlaue Kantenerkennung Zeichnen Sie Text, Linien, Polygone, Ellipsen, verwenden Sie mathematische Ausdrücke und vieles mehr. Vor kurzem hat die Bibliothek auch Unterstützung für das Extrahieren von Text aus Bildern mit OCR hinzugefügt.
Erste Schritte mit ImageMagick
Klonen Sie die neuesten Quellen mit dem folgenden Befehl
Installieren Sie ImageMagick über GitHub.
git clone https://github.com/ImageMagick/ImageMagick.git
Oder verwenden Sie den folgenden Befehl, um es zu installieren.
Installieren Sie ImageMagick über RPM.
$ rpm -Uvh ImageMagick-libs-7.0.10-60.x86_64.rpm
Bild in andere Formate konvertieren
Die Open-Source-C-Bibliothek ImageMagick ermöglicht es Softwareprogrammierern, Bilder in andere unterstützte Dateiformate in ihren eigenen Apps zu konvertieren. Benutzer müssen den Formatparameter angeben, bevor sie in ein anderes Format konvertieren. Die Bibliothek konvertiert das Bild intern früher in andere Formate, bevor die Transformationen angewendet werden. Die Bibliothek unterstützt die Konvertierung in mehrere gängige Bildformate wie BMP-, CMYK-, GIF-, JPEG-, PBM-, PNG-, RGB-, SVG-, TIFF- und XPM-Formate. Ein großartiger Aspekt der Bibliothek ist die Benutzerfreundlichkeit beim Konvertieren des Bildes. Es bietet auch die Möglichkeit, die Größe des Bildes zu reduzieren und verschiedene Effekte anzuwenden, bevor es im gewünschten Format geschrieben wird.
Konvertierung GIF in JPEG Bild 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;
}
Unterstützung von Bildverläufen mit C-API
Die Open-Source-C-Bibliothek ImageMagick ermöglicht es Softwareentwicklern, Bildverläufe mit mehreren Farben mithilfe von C-Befehlen zu erstellen. Mit horizontalen, vertikalen, kreisförmigen oder elliptischen Formen können Sie ganz einfach eine allmähliche Mischung aus einer oder mehreren Farben erstellen. Die Bibliothek hat die Farbverläufe durch die Verwendung mehrerer Definitionen verbessert, wie z. B. das Festlegen der Richtung des linearen Farbverlaufs, das Identifizieren der Koordinaten des Mittelpunkts für den radialen Farbverlauf, das Beschränken des Farbverlaufs auf einen größeren oder kleineren Bereich als die Bildabmessungen und so weiter an. Fügen Sie außerdem für nichtlineare Graustufenverläufe -colorspace RGB -colorspace grey hinzu, bevor Sie die Ausgabe speichern.
Erstellen Sie einen einfachen Graustufengradienten über 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();
}
Wenden Sie Spezialeffekte auf Bilder über C an
Die Open-Source-C-Bibliothek ImageMagick bietet Funktionen zum Anwenden verschiedener Arten von Effekten auf Bilder. Es bietet mehrere wichtige Funktionen wie Weichzeichnen, Schärfen, Schwellenwert, Erstellen von Schatten, Auslaufen von Formen oder Einfärben eines Bildes mit ein paar Zeilen C-Code. Dort werden auch einige spezielle Unschärfeeffekte wie Funkunschärfe und Bewegungsunschärfe unterstützt.
Der Fonteffekt wird über C API angewendet
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");
Unterstützung für große Bilder
Die C-Bibliothek ImageMagick hat Unterstützung für die Arbeit mit sehr großen Bildern bereitgestellt. Es ermöglicht Entwicklern, Bilder bis zu Größen von Mega-, Giga- oder Terapixeln in ihren eigenen Bildverarbeitungsanwendungen zu öffnen, zu lesen, zu verarbeiten oder zu schreiben. Die Bibliothek ermöglicht die Größenänderung eines Bildes auf eine Viertelmillion Pixel im Quadrat. Beim Arbeiten mit großen Bildern müssen Sie sicherstellen, dass große Speicherressourcen verfügbar sind. Wenn die standardmäßige temporäre Festplattenpartition klein ist, weisen Sie ImageMagick an, eine andere Partition mit ausreichend freiem Speicherplatz zu verwenden.