Quelle est la différence entre ImageMagick et GraphicsMagick?
J'ai trouvé moi-même en évaluant à la fois de ces libs. En dehors de ce que l'GraphicsMagick comparaison dit, je vois que ImageMagick toujours eu des mises à jour et il semble que les deux sont presque identiques.
Je cherche simplement à faire à base de manipulation d'image en C++ (c'est à dire du chargement de l'image, les filtres, affichage); est-il des différences je devrais être au courant au moment de choisir entre ces bibliothèques?
Vous devez vous connecter pour publier un commentaire.
De ce que j'ai lu GraphicsMagick est plus stable et plus rapide.
J'ai fait une couple de scientifique, les tests et constaté la gm à être deux fois plus rapide que im (faire un resize).
J'ai trouvé ImageMagick pour être incroyablement lent pour le traitement TIFF groupe-4 images (B&W les images de document), principalement en raison du fait qu'il convertit à partir de 1 bit par pixel, à 8 et à l'arrière à nouveau de faire toute manipulation de l'image. Le GraphicsMagick groupe remanié le format TIFF avec leur version 1.2, et il est beaucoup plus rapide au traitement de ces types d'images que l'original ImageMagick est. L'actuel GraphicsMagick version stable est à 1.3.5.
- Je utiliser ImageMagick quand la vitesse n'est pas un facteur. Toutefois, sur le côté serveur, où des dizaines de milliers d'images sont traitées quotidiennement, GraphicsMagick est sensiblement plus rapide dans certains cas jusqu'à 50% plus rapide dans les benchmarks!
Comme beaucoup de choses dans la vie, différentes personnes ont des idées différentes sur ce qui est le mieux. Si vous demandez à un photographe de paysages qui erre dans la pluie dans les montagnes de l'Ecosse, qui est le meilleur appareil photo au monde, il va vous dire un poids léger, étanche de la caméra. Demandez à un studio de photographe, et il vous dira la résolution la plus élevée celui qui a la meilleure vitesse de synchronisation du flash. Et si vous demandez à un photographe sportif il vous dira l'un avec l'autofocus plus rapide et plus cadence. C'est donc avec ImageMagick et GraphicsMagick.
Avoir répondu à près de 2 000 StackOverflow questions sur ImageMagick au cours de la dernière 5 ans, je fais les observations suivantes...
En termes de popularité...
En termes de performances...
Je suis heureux de concéder que GraphicsMagick peut être plus rapide pour certains, mais pas tous les problèmes. Cependant, si la vitesse est votre principale considération, je pense que vous devriez probablement utiliser
libvips
, ou de code parallèle aujourd'hui sur les Processeurs multi-core ou fortement SIMD-optimisés (ou GPU-optimisé) des bibliothèques comme OpenCV.En termes de fonctionnalités et de flexibilité...
Il y en a un très clair vainqueur ici - ImageMagick. Mon expérience est qu'il y a de nombreuses fonctionnalités manquantes à partir de GraphicsMagick qui sont présents dans ImageMagick et je liste de certains de ces ci-dessous, dans aucun ordre particulier.
Je reconnais volontiers que je ne suis pas aussi familier avec GraphicsMagick que je suis avec ImageMagick, mais j'ai fait de mon mieux pour en trouver aucune mention des fonctionnalités les plus récentes GraphicsMagick code source. Donc, pour le Savant Détecteur de Bord, j'ai exécuté la commande suivante sur le GM code source:
et n'a rien trouvé.
Savant détecteur de Bord
Cela semble être totalement absent dans le GM. Voir
-canny radiusxsigma{+lower-percent}{+upper-percent}
de la GI.Voir l'exemple ici, et des échantillons de détection des bords sur l'image Lena:
Parenthesised de traitement sophistiquées de re-séquençage
C'est une killer feature de ImageMagick que j'ai souvent cruellement manquer quand avoir à utiliser de GM. IM peut charger, ou de créer, ou de clone de toute une série d'images et d'appliquer différents de traitement de manière sélective à des images spécifiques et re-séquence, de duplication et de re-commander très simplement et facilement. Il est difficile de transmettre l'incroyable flexibilité ceci vous donne une réponse courte.
Imaginez que vous voulez faire quelque chose d'assez simple comme charger Une image et flou, charger l'image de B et de faire en niveaux de gris, puis placer les images côte-à-côte avec l'Image B sur la gauche. Qui ressemble à ceci avec ImageMagick:
Vous ne pouvez même pas commencer avec le GM, il va se plaindre à propos de l'parenthèses. Si vous les enlevez, il va se plaindre au sujet de la permutation de l'ordre des images. Si vous supprimez qu'il appliquera la conversion en niveaux de gris pour les deux images, car il ne comprend pas les parenthèses et le lieu imageA sur la gauche.
Voir la suite de séquençage des commandes en IM:
-swap
-clone
-duplicate
-delete
-insert
-reverse
fx BRICOLAGE de Traitement de l'Image de l'Opérateur
IM a le
-fx
opérateur qui vous permet de créer et d'expérimenter avec incroyablement sophistiqués de traitement de l'image. Vous pouvez avoir la fonction évaluée pour chaque pixel dans une image. La fonction peut être aussi compliqué que vous le souhaitez (enregistrer dans un fichier si vous le souhaitez) et l'utilisation de toutes les opérations mathématiques, ternaire de styleif
états, des références à des pixels de même dans d'autres images et leur luminosité ou de la saturation et ainsi de suite.Voici quelques exemples:
Un StackOverflow réponse qui utilise cette fonctionnalité pour un grand effet dans le traitement de l'écran vert (chroma-clé) des images est ici.
De Fourier (domaine de fréquence) Analyse
Il semble y avoir aucune mention de la marche avant ou arrière Analyse de Fourier dans le GM, ni la Haute Plage Dynamique de soutien (voir plus loin) qui est généralement nécessaire pour le soutenir. Voir
-fft
de la GI.Composante Connexe De L'Analyse, L'Étiquetage Et À L'Analyse Blob
Il ne semble pas "Composante connexe" l'Analyse de l' dans le GM - également connu comme "étiquetage" et "Blob" l'Analyse de l'. Voir
-connected-components connectivity
pour 4 - et 8-connecté à l'analyse blob.Cette caractéristique à elle seule a fourni 60+ réponses - voir ici.
Hough Ligne De Détection
N'y a pas de Hough Ligne de Détection dans le GM. Voir
-hough-lines widthxheight{+threshold}
de la GI.Voir description de la fonction ici et en suivant l'exemple de détection de lignes:
Moments et de perception de Hachage (pHash)
Il semble y avoir pas de support pour l'image les moments de calcul (centroïdes et les ordres supérieurs), ni de perception de Hachage dans le GM. Voir
-moments
de la GI.Morphologie
Il semble y avoir pas de support pour le traitement Morphologique dans le GM. Dans la messagerie instantanée, il est sophistiqué de soutien pour:
Voir tous les traitement sophistiqué que vous pouvez faire avec ce tutoriel.
Contraste Limité Adaptative Égalisation d'Histogramme - CLAHE
N'y a pas de support pour le Contraste Limité Adaptative Égalisation d'Histogramme dans le GM. Voir
-clahe widthxheight{%}{+}number-bins{+}clip-limit{!}
de la GI.HDR - High Dynamic Range Imaging
N'y a pas de support pour l'Imagerie à grande Gamme Dynamique dans le GM - 8, 16 et 32-bit integer types.
Convolution
ImageMagick prend en charge de nombreux types de convolution:
Aucun de ceux-ci sont mentionnés dans le GM code source.
La magie Persistante Registre (MPR)
C'est une précieuse fonctionnalité présente dans ImageMagick qui permet d'écrire des intermédiaires les résultats du traitement à des morceaux de la mémoire pendant le traitement sans la surcharge de l'écriture sur le disque. Par exemple, vous pouvez préparer une texture ou un motif et puis mosaïque sur une image, ou de préparer un masque et ensuite de le modifier et de l'appliquer plus tard dans le même traitement sans passer par le disque.
Voici un exemple:
Plus Large Colourspace Soutien
IM prend en charge les colourspaces pas trouvé dans le GM:
Pango Soutien
IM prend en charge Pango Langage de Balisage de Texte qui est similaire à HTML et vous permet d'annoter des images avec du texte qui change:
milieu d'une phrase et beaucoup, beaucoup plus. Il est un excellent exemple ici.
Shrink-sur-charger avec des JPEG
Ce précieux fonctionnalité permet à la bibliothèque de rétrécir les images JPEG, lorsqu'elles sont lues à partir du disque, de sorte que les coefficients de lecture, de sorte que le I/O est atténuée, et la consommation de mémoire est réduite au minimum. Il peut massivement améliorer les performances lors de la down-scaling des images.
Voir l'exemple ici.
Maximale définie JPEG taille lors de l'écriture de
IM soutient la très demandée option pour spécifier une taille maximum d'un fichier lors de l'écriture des fichiers JPEG,
-define jpeg:extent=400KB
par exemple.Coordonnées polaires transforme
IM prend en charge la conversion entre cartésiennes et polaires coordonnées, voir
-distort polar
et-distort depolar
.De la statistique et des opérations sur personnalisable zones
Avec ses
-statistic MxN
opérateur, ImageMagick peut générer de nombreux types de statistiques et d'effets. Par exemple, vous pouvez définir chaque pixel dans une image de la pente (différence entre les plus brillants et les plus sombres de son 5x3 quartier:Ou vous pouvez définir chaque pixel à la médiane de son 1x200 quartier:
Voir l'exemple de l'application ici.
Séquences d'images
ImageMagick prend en charge les séquences d'images, donc si vous avez un ensemble de très bruyante, les images prises à des sensibilités ISO, vous pouvez charger la totalité de la séquence d'images et de prendre, par exemple, la médiane ou la moyenne de toutes les images pour réduire le bruit. Voir la
-evaluate-sequence
de l'opérateur. Je ne veux pas de la médiane dans un quartier en une seule image, je veux dire par trouver la médiane de toutes les images à chaque pixel de position.Ci-dessus n'est pas une liste exhaustive, par tous les moyens, ils sont les premiers qui me sont venus à l'esprit quand j'ai pensé que sur les différences. Je n'ai même pas parler d'un appui pour HEIC (Apple format pour iPhone, images), de plus en plus commune de la Haute Plage Dynamique des formats tels que EXR, ou les autres. En effet, si vous comparez les formats de fichier pris en charge par les deux produits (
gm convert -list format
etmagick identify -list format
), vous trouverez que IM prend en charge 261 formats et GM prend en charge 192.Comme je l'ai dit, différentes personnes ont des opinions différentes. Choisissez celui que vous aimez et prenez plaisir à l'utiliser.
Comme toujours, je suis redevable à Anthony Thyssen pour la qualité de ses idées et de discours sur ImageMagick à https://www.imagemagick.org/Usage/ Merci aussi à Fred Weinhaus pour ses exemples.
Histoire
graphicsmagick a été forké imagemagick en 2002 en raison de différends entre les fondateurs des développeurs. ainsi, ils partagent la même base de code.
Ref : https://en.wikipedia.org/wiki/GraphicsMagick
Objectif
graphicsmagick
imagemagick
Autres que la vitesse, imagemagick ajoute un certain nombre d'outils cli de terminal shell alors que graphicsmagick est un outil unique qui vous pouvez appeler.
De la CLI de la conception de l'interface
graphicsmagick
imagemagick
à mon humble avis, je préfère (en fait, seulement) graphicsmagick(gm) sur imagemagick que ce dernier a plus de chance de l'outil nom de l'affrontement, ce qui provoque beaucoup de problèmes à trouver la raison de certains outils ne sont pas en cours d'exécution, en particulier au cours côté serveur d'automatisation des tâches. en résumé graphicsmagick a beaucoup plus claire de la conception.
imaginer un binaire appelé convertir dans un projet et est-il imagemagick convertir ou de votre propre roulé outil dans un projet qui va être appelé?
liste des outils d'imagemagick (y compris les convertir, de les comparer, de les afficher) : https://imagemagick.org/script/command-line-tools.php
liste de graphicsmagick commandes :
http://www.graphicsmagick.org/utilities.html
note : a partir de v7, comme l'a mentionné Mark S, imagemagick est maintenant distribué en tant que binaire unique, et aussi de soutenir les anciens v6 commandes.
Performance
une simple consommation de mémoire de test peuvent être trouvés ici :
https://coderwall.com/p/1l7h-a/imagemagick-bloat-graphicsmagick
Dépendances
GraphicsMagick dépend 36 bibliothèques alors que ImageMagick nécessite 64. Ref : http://www.graphicsmagick.org/1.3/FAQ.html
magick
a donc peu de chance de conflit de nom. Elle a aussi beaucoup, beaucoup de meilleures fonctionnalités que GraphicsMagick à mon humble avis - plus précisément à l'égard parenthesised expressions, le clonage et du contrôle général.libvips
... github.com/jcupitt/libvips/wiki/Speed-and-memory-useGraphicsMagick été l'un des premiers fourche de Imagemagick. Vous pouvez lire sur Imagemagick l'histoire et de la fourche à GraphicsMagick à https://imagemagick.org/script/history.php. Il semble que Imagemagick a continué à être développé assez longuement, tandis que GraphicsMagick est resté plus ou moins stagné depuis la fourche.