⚠️ Ceci est un site de traduction non officiel, sans lien avec ImageMagick Studio LLC. Pour des informations officielles, consultez la page originale (https://usage.imagemagick.org/resize/index.html).

Exemples ImageMagick -- Redimensionnement ou mise à l'échelle (techniques générales)

Nous étudions l'agrandissement et la réduction des images de diverses manières. L'image reste intacte et entière, mais les points de couleur individuels sont fusionnés ou étendus pour occuper une zone de toile plus petite/plus grande. Notez que, bien que cela soit lié à la résolution d'une image (nombre de pixels par unité de longueur réelle), cela relève davantage de la façon dont l'image est finalement utilisée, et ne constitue pas une véritable préoccupation du traitement direct d'image.


Redimensionnement des images La manière la plus évidente et la plus courante de changer la taille d'une image est de la redimensionner ou de la mettre à l'échelle. Le contenu de l'image est alors agrandi ou, plus souvent, réduit pour s'adapter à la taille souhaitée. Mais bien que les pixels et les couleurs réels de l'image soient modifiés, le contenu représenté par l'image reste essentiellement inchangé. Cependant, le redimensionnement des images peut être une affaire délicate. Il peut modifier les images de façon très préjudiciable, et il n'existe pas de « meilleure manière » car ce qui est le mieux est subjectif selon ce que vous voulez réellement obtenir du processus de redimensionnement. Comme il n'existe pas de manière « meilleure » ou « parfaite », il y a beaucoup d'options que vous pourriez vouloir prendre en compte. IM a toujours essayé de fournir des options pour vous donner la plus grande latitude de contrôle dans le redimensionnement des images. Il y a des centaines de possibilités, de styles et de techniques, et même les experts du redimensionnement essaient constamment de trouver des manières nouvelles et différentes de changer la taille d'une image. Bien sûr, pour la plupart des gens, les options par défaut habituelles sont suffisantes car elles ont été conçues avec un usage général à l'esprit. L'opérateur de redimensionnement a été très soigneusement conçu pour tenter de produire un très bon résultat sur des images du monde réel. Cela ne veut pas dire que vous ne pouvez pas l'utiliser pour des diagrammes ou des dessins au trait, bien que pour ce type d'image vous puissiez avoir besoin d'utiliser certaines des options plus avancées que nous verrons plus loin.
La toute première chose à laquelle vous devriez réfléchir lorsque vous spécifiez une image à redimensionner est...
Voulez-vous vraiment modifier l'image ? Le redimensionnement entraînera des changements drastiques sur une image, et éviter ou minimiser les « artefacts » indésirables est de la plus haute importance. Peut-être qu'un simple Rognage léger des bords, ou un Recadrage plus général de l'image produira un résultat meilleur et plus souhaitable qu'un redimensionnement complet de l'image. Cela aura généralement une meilleure apparence et la zone restante sera une copie parfaite de l'original. Parce qu'il est souvent préférable de ne pas redimensionner les images...

Le redimensionnement ne fera absolument rien si l'image redimensionnée a la même taille.

L'exception à cela (il y a toujours une exception) est si vous spécifiez réellement un filtre de rééchantillonnage à l'aide d'un paramètre « [-filter](https://imagemagick.org/command-line-options/#filter) ». Dans ce cas, le comportement normal « ne rien faire si l'image n'est pas redimensionnée » est outrepassé et le filtre sera appliqué. Cependant, de nombreux filtres (même les filtres par défaut) peuvent flouter légèrement les images. Cela fait partie de leur nature. Donc, normalement, ce « court-circuit » d'un redimensionnement sans effet est une bonne chose. L'argument de l'opérateur de redimensionnement est la zone dans laquelle l'image doit s'insérer. Cette zone n'est pas la taille finale de l'image mais la taille maximale de la zone dans laquelle l'image doit s'insérer. C'est-à-dire que, parce qu'IM essaie de préserver le rapport d'aspect de l'image plus que la taille finale (sauf si un drapeau « ! » est donné), au moins une (sinon les deux) des dimensions finales devrait correspondre à l'argument donné. Alors soyons clairs...

Le redimensionnement fera tenir l'image dans la taille demandée.
Il ne remplit PAS la boîte de taille demandée.

Le rapport d'aspect est préservé essentiellement afin que tout cercle dans l'image d'entrée reste un cercle dans l'image de sortie. C'est-à-dire que l'image ne sera pas écrasée ou comprimée, seulement redimensionnée, sauf si vous en décidez autrement. Par exemple, ici j'essaie de faire tenir deux images sources, une plus grande et une plus petite, dans une boîte carrée de 64x64 pixels.

  magick dragon_sm.gif    -resize 64x64  resize_dragon.gif
  magick terminal_sm.gif  -resize 64x64  resize_terminal.gif

[IM Output] [IM Output] [IM Output] [IM Output]

Comme vous pouvez le voir, une image carrée de 64x64 n'a PAS été produite par « [-resize](https://imagemagick.org/command-line-options/#resize) ». En fait, les images ont seulement été agrandies ou réduites juste assez pour s'insérer au mieux dans la taille donnée. Ignorer le rapport d'aspect (drapeau '!')
Si vous le souhaitez, vous pouvez forcer « [-resize](https://imagemagick.org/command-line-options/#resize) » à ignorer le rapport d'aspect et à déformer l'image pour qu'elle génère toujours une image exactement de la taille spécifiée. Cela se fait en ajoutant le caractère « ! » à la taille. Malheureusement, ce caractère est aussi parfois utilisé à des fins spéciales par divers interpréteurs de commandes UNIX. Vous devrez donc peut-être l'échapper d'une manière ou d'une autre pour le préserver.

  magick dragon_sm.gif    -resize 64x64\!  exact_dragon.gif
  magick terminal.gif  -resize 64x64\!  exact_terminal.gif

[IM Output] [IM Output] [IM Output] [IM Output]

Réduire uniquement les images plus grandes (drapeau '>')
Une autre option couramment utilisée consiste à restreindre IM afin qu'il ne réduise les images que pour les faire tenir dans la taille donnée. Ne jamais agrandir. C'est l'option de redimensionnement '>'. Considérez qu'elle n'applique le redimensionnement qu'aux images « plus grandes que » la taille donnée (c'est un peu contre-intuitif).

  magick dragon_sm.gif    -resize 64x64\>  shrink_dragon.gif
  magick terminal.gif  -resize 64x64\>  shrink_terminal.gif

[IM Output] [IM Output] [IM Output] [IM Output]

Cette option est souvent très importante pour économiser de l'espace disque pour les images, ou dans la génération de vignettes, lorsque l'agrandissement des images n'est généralement pas souhaitable car il tend à produire des agrandissements « flous ». Le drapeau « réduire uniquement » ('>') est un caractère spécial à la fois dans l'interpréteur UNIX et dans les scripts batch Windows, et vous devrez échapper ce caractère (en utilisant la barre oblique inverse '\>' dans l'interpréteur, et '^>' dans le batch Windows). Il est également spécial dans les pages web HTML, donc les scripts PHP peuvent aussi nécessiter un traitement particulier.
Agrandir uniquement les images plus petites (drapeau '<')
L'inverse du drapeau précédent est '<', qui n'agrandit que les images plus petites que la taille donnée ; il est rarement utilisé. L'usage le plus notable se fait avec un argument tel que '1x1<'. Cet argument de redimensionnement ne redimensionnera jamais réellement aucune image. En d'autres termes, c'est une opération sans effet (no-op), qui vous permettra de court-circuiter une opération de redimensionnement dans des programmes et des scripts qui utilisent toujours « [-resize](https://imagemagick.org/command-line-options/#resize) ». À part cela, vous ne voudrez probablement pas réellement utiliser cette fonctionnalité. Un exemple de l'utilisation de cet argument de « court-circuit » concerne le paramètre « [-geometry](https://imagemagick.org/command-line-options/#geometry) » de « magick montage ». Voir Montage et géométrie, prudence requise pour plus de détails. Le drapeau « agrandir uniquement » ('<') est un caractère spécial à la fois dans l'interpréteur UNIX et dans les scripts batch Windows, et vous devrez échapper ce caractère (en utilisant la barre oblique inverse '\<' dans l'interpréteur, et '^<' dans le batch Windows). Il est également spécial dans les pages web HTML, donc les scripts PHP peuvent aussi nécessiter un traitement particulier.
--- ---
Drapeau de remplissage de zone (drapeau '^')
Depuis IM v6.3.8-3, IM dispose désormais d'un nouveau drapeau d'option de géométrie '^' qui est utilisé pour redimensionner l'image en fonction de la plus petite dimension d'ajustement. C'est-à-dire que l'image est redimensionnée pour remplir complètement (et même déborder) la zone de pixels donnée.
  magick dragon_sm.gif    -resize 64x64^  fill_dragon.gif
  magick terminal.gif  -resize 64x64^  fill_terminal.gif

[IM Output] [IM Output] [IM Output] [IM Output]

En l'état, cette option ne semble pas très utile, mais lorsqu'elle est combinée avec un « [-crop](https://imagemagick.org/command-line-options/#crop) » centré (ou non centré) ou un « [-extent](https://imagemagick.org/command-line-options/#extent) » pour supprimer les parties excédentaires de l'image, vous pouvez ajuster l'image de manière à remplir complètement la zone spécifiée. À la fois l'argument de redimensionnement et celui de la taille finale de l'image devraient avoir les mêmes valeurs. Bien que le « [-crop](https://imagemagick.org/command-line-options/#crop) » soit le plus logique, il peut nécessiter un « [+repage](https://imagemagick.org/command-line-options/#repage) » supplémentaire pour supprimer les informations de superposition de la toile virtuelle. Le « [-extent](https://imagemagick.org/command-line-options/#extent) » ne nécessite pas ce nettoyage, mais permet tout de même l'utilisation de « [-gravity](https://imagemagick.org/command-line-options/#gravity) » pour le positionnement. Voir Découpage et bordure pour plus d'informations.

  magick dragon_sm.gif      -resize 64x64^ \
          -gravity center -extent 64x64  fill_crop_dragon.gif
  magick terminal.gif    -resize 64x64^ \
          -gravity center -extent 64x64  fill_crop_terminal.gif

[IM Output] [IM Output] [IM Output] [IM Output]

De plus, « [-extent](https://imagemagick.org/command-line-options/#extent) » peut être utilisé pour rembourrer les images qui utilisent le redimensionnement normal (avec un paramètre de couleur « [-background](https://imagemagick.org/command-line-options/#background) »). Voir Vignettes, ajustement à un espace donné — résumé, pour en savoir plus sur ce type d'opération. N'oubliez pas que cela nécessite IM v6.3.8-3 ou une version ultérieure pour pouvoir l'utiliser. Sinon, utilisez l'ancienne technique de redimensionnement pour remplir un espace donné ci-dessous.
Le drapeau de remplissage de zone ('^') est un caractère spécial dans les scripts batch Windows et vous devrez échapper ce caractère en le doublant. Par exemple '^^', sinon cela ne fonctionnera pas. Voir Scripts batch Windows pour cette particularité et d'autres spécificités de Windows.
--- ---
Redimensionnement en pourcentage (drapeau '%')
Ajouter un signe pourcentage, '%', à l'argument de « [-resize](https://imagemagick.org/command-line-options/#resize) » fait que le redimensionnement met l'image à l'échelle selon le montant spécifié.
  magick dragon_sm.gif    -resize 50%  half_dragon.gif
  magick terminal.gif  -resize 50%  half_terminal.gif

[IM Output] [IM Output] [IM Output] [IM Output]

Soyez toutefois averti que la taille finale en pixels de l'image sera arrondie à l'entier le plus proche. C'est-à-dire que vous ne générerez pas de pixels partiels le long du bord de l'image ! En conséquence, l'échelle réelle peut ne pas correspondre exactement au facteur d'échelle que vous fournissez, et peut même être légèrement différente pour les directions X et Y, mais elle en sera très proche. (Voir Redimensionnement avec Distort ci-dessous). Si vous voulez vraiment redimensionner une image de telle sorte que la taille finale semble présenter des différences de taille de pixel partielle, vous pouvez utiliser l'opérateur de distorsion générale et plus précisément la mise à l'échelle-rotation-translation (voir Redimensionnement par Distort ci-dessous).
Le drapeau de redimensionnement en pourcentage ('%') est un caractère spécial dans les scripts batch Windows et vous devrez échapper ce caractère en le doublant. Par exemple '%%', sinon cela ne fonctionnera pas. Voir Scripts batch Windows pour cette particularité et d'autres spécificités de Windows.
--- ---
_Toutes ces options « drapeau » '!', '<', '>', '^', '%' et '@' sont simplement des interrupteurs marche/arrêt pour l'opérateur « [-resize](https://imagemagick.org/command-line-options/#resize) ». Seule la présence (ou l'absence) du caractère dans l'argument de redimensionnement compte, pas sa position. Ils peuvent apparaître au début ou à la fin de l'argument, ou avant ou après des nombres individuels (mais pas au milieu d'un nombre).

C'est-à-dire que '%50' a exactement le même effet que '50%' bien que ce dernier soit préféré pour la lisibilité. De même '50%x30' signifie en réalité '50%x30%' et NON 50 % de largeur et 30 pixels de hauteur comme vous pourriez le penser.

C'est le cas pour tous les arguments d'IM utilisant un argument de style « géométrie » ('WxH' ou '+X+Y'). Cependant, les décalages tels que '+X+Y' ne sont jamais traités comme un pourcentage._
---|---
Redimensionnement avec une limite de nombre de pixels par zone (drapeau '@')
Il y a une dernière option de drapeau pour « [-resize](https://imagemagick.org/command-line-options/#resize) ». Le symbole « arobase » '@' redimensionnera une image pour qu'elle ne contienne pas plus que le nombre de pixels donné. Cela peut être utilisé par exemple pour rendre une collection d'images de tailles toutes différentes à peu près de la même taille. Par exemple, ici nous redimensionnons nos deux images à une taille approximative de 64x64, soit 4096 pixels.

  magick dragon_sm.gif    -resize 4096@  pixel_dragon.gif
  magick terminal.gif  -resize 4096@  pixel_terminal.gif

[IM Output] [IM Output] [IM Output] [IM Output]

Notez que la taille finale de l'image n'est pas limitée à 64 pixels en hauteur ou en largeur, mais aura une aire aussi proche que possible de cette taille (tout en lui étant inférieure) qu'IM puisse gérer. Cela signifie qu'une dimension sera généralement légèrement supérieure à 64 pixels et une légèrement inférieure. D'une certaine manière, c'est un compromis idéal pour la création de vignettes. Voir Taille de vignette par ajustement de la zone. Vous pouvez aussi ajouter le drapeau '>' pour ne réduire que les images qui ont plus que le nombre de pixels calculé, tout en laissant intactes les images qui sont déjà plus petites que cette taille. | _Malheureusement, le drapeau ' <', agrandir les images plus petites, est actuellement ignoré lors de l'utilisation du « redimensionnement par zone ».

_
---|---
Redimensionnement lors de la lecture de l'image
L'opérateur de redimensionnement peut aussi être appliqué aux images immédiatement après leur lecture, avant qu'elles ne soient ajoutées à la séquence d'images courante et que l'image suivante soit lue. Ainsi, une quantité minimale de mémoire est nécessaire pour lire un grand nombre d'images. Voir Modificateurs de lecture d'image pour plus de détails. Par exemple...

  magick dragon_sm.gif'[64x64]'    read_dragon.gif
  magick terminal.gif'[64x64]'  read_terminal.gif

[IM Output] [IM Output] [IM Output] [IM Output]

Le seul problème avec cette technique est qu'aucune option de redimensionnement spéciale ne peut être utilisée pendant le processus de lecture de l'image. Le redimensionnement et la transparence posaient un problème pour ImageMagick avant la v6.2.4, produisant un effet de halo noir autour des objets de couleur claire sur la transparence. Cela a été étudié et finalement corrigé à partir de cette version. Pour plus de détails sur cet ancien bug, voir Bug du halo de redimensionnement

Autres opérateurs de redimensionnement Geometry — Redimensionner uniquement la dernière imageGeometry est une option très spéciale. L'opérateur se comporte légèrement différemment dans chaque commande IM, et souvent de manières spéciales et magiques. Les raisons en sont principalement dues à un usage hérité et devraient être évitées si possible. Premièrement, dans « magick display », il est utilisé pour dimensionner et positionner la fenêtre de l'image affichée. C'était son usage et sa signification d'origine lorsqu'IM a été créé. C'est à partir de là que ses autres capacités de « redimensionnement » sont apparues. Pour « montage », « [-geometry](https://imagemagick.org/command-line-options/#geometry) » est un paramètre qui est conservé jusqu'à ce que tous les arguments aient été lus. À ce moment-là, il définit alors la taille finale de la tuile (cellule) (ou laisse « magick montage » la déterminer) tandis que les arguments de position sont utilisés pour spécifier l'espace entourant les cellules de tuile. Voir Paramètres de contrôle de montage. Dans « [composite](basics.html#composite) », « [-geometry](https://imagemagick.org/command-line-options/#geometry) » est également conservé jusqu'à ce que la fin des arguments soit atteinte. Il est ensuite utilisé pour redimensionner et positionner l'image de superposition (la première image donnée) avant qu'elle ne soit superposée sur l'image d'arrière-plan (la seconde image). Par exemple, voir Composition de plusieurs images. Comme vous pouvez le voir, il est utilisé comme un « paramètre » dans la plupart des commandes IM, mais dans « magick », « [-geometry](https://imagemagick.org/command-line-options/#geometry) » est à la fois un opérateur spécial de redimensionnement d'image et un paramètre de positionnement. Ce qu'il fait, c'est « [-resize](https://imagemagick.org/command-line-options/#resize) » uniquement la dernière image de la séquence d'images courante. C'est le seul opérateur de traitement d'image conçu spécifiquement pour n'affecter qu'une seule image (la dernière) de la séquence d'images courante. Pour compliquer encore cette option spéciale, les parties positionnelles de l'option « [-geometry](https://imagemagick.org/command-line-options/#geometry) » sont conservées par la commande « magick », tout comme dans « [composite](basics.html#composite) ». C'est-à-dire que toute position est préservée pour une utilisation ultérieure par « [-composite](https://imagemagick.org/command-line-options/#composite) », afin de positionner l'image de « superposition » (l'avant-dernière image de la séquence d'images courante) sur l'image d'« arrière-plan » (la première image de la séquence d'images). Pour cette raison, vous devriez limiter l'utilisation de « [-geometry](https://imagemagick.org/command-line-options/#geometry) » dans les commandes « magick » à juste avant une opération « [-composite](https://imagemagick.org/command-line-options/#composite) » ou « [-layers](https://imagemagick.org/command-line-options/#layers) composite ». En résumé, cet opérateur n'est vraiment utile qu'après la lecture ou la création d'une seconde image, juste avant d'effectuer un type de composition alpha pour traiter ces images. Pour des exemples pratiques d'utilisation de « [-geometry](https://imagemagick.org/command-line-options/#geometry) » pour redimensionner/positionner des images, voir Composition de plusieurs images. Thumbnail — Redimensionner avec suppression des profilsL'opérateur « -thumbnail » est une variante de « [-resize](https://imagemagick.org/command-line-options/#resize) » conçue spécifiquement pour réduire de très très grandes images en petites vignettes. D'abord, il utilise « [-strip](https://imagemagick.org/command-line-options/#strip) » pour supprimer tous les profils et autres superflus de l'image. Il utilise ensuite « [-sample](https://imagemagick.org/command-line-options/#sample) » pour réduire l'image à 5 fois la hauteur finale. Enfin, il effectue un « [-resize](https://imagemagick.org/command-line-options/#resize) » normal pour réduire l'image à sa taille finale. Tout cela vise essentiellement à accélérer la génération de vignettes à partir de très grands fichiers. Cependant, pour les vignettes d'images JPEG, vous pouvez limiter la taille de l'image lue depuis le disque en utilisant le paramètre spécial « -define jpeg:size= ». Voir Lecture des images JPEG pour plus de détails. Ainsi, cette amélioration de vitesse est rarement nécessaire pour la génération de vignettes JPEG, bien que la suppression des profils reste très importante. Pour les autres formats d'image, tels que TIFF, la suppression des profils et l'amélioration de la vitesse restent toutes deux d'une importance vitale. C'est pourquoi c'est toujours la méthode recommandée pour redimensionner les images en vue de la création de vignettes. Avant IM v6.5.4-7, « [-thumbnail](https://imagemagick.org/command-line-options/#thumbnail) » supprimait TOUS les profils de l'image, y compris les profils de couleur ICC. À partir de cette version, les profils de couleur seront préservés. Si le profil de couleur n'est pas souhaité, alors « [-strip](https://imagemagick.org/command-line-options/#strip) » supprime tous les profils.
Resample — Modifier la résolution d'une imageTout comme dans les opérateurs de redimensionnement alternatifs précédents, « -resample » est également un simple enrobage autour de l'opérateur « [-resize](https://imagemagick.org/command-line-options/#resize) » normal. Son but cependant est d'ajuster le nombre de pixels dans une image afin que, lorsqu'elle est affichée à la résolution ou densité donnée, l'image conserve la même taille apparente en termes réels. C'est-à-dire que l'image donnée est agrandie ou réduite, en termes de nombre de pixels, tandis que la taille de l'image en unités réelles reste la même. Il est destiné à être utilisé pour des images qui ont été lues depuis, ou qui seront écrites vers, un programme ou un appareil d'une résolution ou densité particulière. C'est particulièrement important pour ajuster une image afin qu'elle convienne à un périphérique de sortie matériel spécifique, qu'il s'agisse d'un écran, d'une imprimante, ou d'un format d'image postscript ou PDF d'une résolution spécifique. Rappelez-vous simplement que la taille réelle de l'image ne change pas, seulement sa résolution et bien sûr le nombre de pixels utilisés pour représenter l'image. Par exemple, supposez que vous ayez une image que vous avez numérisée à 300 ppp (points par pouce). L'image a été enregistrée avec cette résolution (densité) ou, lorsque vous l'avez lue dans IM, vous l'avez spécifiée comme une image 300 ppp (en utilisant « [-density](https://imagemagick.org/command-line-options/#density) »). Maintenant, vous décidez de l'afficher sur un écran qui a une résolution de 90 ppp, donc vous faites un « -resample 90 ». IM va maintenant redimensionner l'image de 90/300, soit à 30 % de la taille originale de l'image, et fixer la nouvelle densité de l'image à 90 ppp. L'image est maintenant plus petite en termes de nombre de pixels utilisés, mais si elle est affichée sur un écran 90 ppp, elle apparaîtra à la même taille physique que l'image originale que vous avez numérisée. C'est-à-dire qu'elle a maintenant une résolution appropriée pour un écran 90 ppp, donc elle sera affichée à l'utilisateur à sa taille réelle d'origine. Un paramètre « [-units](https://imagemagick.org/command-line-options/#units) » (avec les arguments 'PixelsPerInch' ou 'PixelsPerCentimeter') peut être nécessaire dans certaines situations pour que cet opérateur fonctionne correctement. Ce paramètre peut aussi être important pour la sortie vers les formats de fichier image Postscript et PDF. Notez que seul un petit nombre de formats de fichier image (tels que JPEG, PNG et TIFF) sont capables de stocker la résolution ou densité de l'image avec les données de l'image. Pour les formats qui ne prennent pas en charge une résolution d'image, ou qui sont des formats d'image multi-résolution (à base vectorielle), la résolution originale de l'image doit être spécifiée via l'attribut « [-density](https://imagemagick.org/command-line-options/#density) » (voir Métadonnées de densité d'image) avant la lecture. Si aucun attribut de densité n'a été défini, IM supposera qu'il a une densité par défaut de 72 ppp. Définir la densité APRÈS la lecture d'une telle image n'affectera que sa résolution de sortie, et n'affectera pas sa taille finale en termes de pixels. Scale — Réduire avec moyennage de pixelsL'opérateur de redimensionnement « -scale » est une forme simplifiée et plus rapide de la commande de redimensionnement. Lors de l'agrandissement d'une image, les pixels de l'image sont répliqués pour former de grands blocs rectangulaires de couleur. Ce qui est idéal pour montrer un agrandissement propre et non flou d'une image. Par exemple, voici une vue agrandie de l'un des motifs de tuiles intégrés...
  magick -size 8x8 pattern:CrossHatch30 -scale 800% scale_crosshatch.gif

[IM Output]
Généralement, une seule valeur en pourcentage qui est un multiple de 100 % est utilisée pour l'agrandissement de l'image afin de garantir que tous les pixels sont agrandis du même montant, sinon vous pouvez avoir des lignes et des colonnes de pixels de tailles différentes produisant un motif de Moiré à grande échelle. Par exemple, ici j'ai mal mis à l'échelle un motif lisse « damier gris à 50 % », en utilisant une taille qui n'était pas un multiple de la taille de l'image originale. |

  magick pattern:gray50 scale_gray_norm.gif
  magick pattern:gray50 -scale 36 scale_gray_mag.gif

[IM Output]

[IM Output]
Lors de la réduction des images, les pixels voisins sont moyennés ensemble pour produire un nouveau pixel coloré. Par exemple, mettre une image à l'échelle à 50 % de sa taille originale moyennera effectivement ensemble des blocs de 4 pixels pour créer un nouveau pixel (en supposant que la taille de l'image soit également un multiple de 2).Cependant, la prudence est de mise car une image réduite par mise à l'échelle peut aussi générer des motifs de Moiré, à moins que la nouvelle image ne soit une réduction par un entier exact (une technique connue sous le nom de « binning »), ce qui nécessite aussi que la taille de l'image originale soit un multiple entier exact de la taille finale. De plus, une photographie du monde réel qui a été fortement réduite à l'aide de « [-scale](https://imagemagick.org/command-line-options/#scale) » tend à paraître trop nette, avec des effets de crénelage (« escalier ») le long des bords nets. Le moyennage des pixels de « [-scale](https://imagemagick.org/command-line-options/#scale) » lui permet de générer des images « pixellisées ». Vous réduisez essentiellement la taille de l'image pour moyenner les pixels, puis l'agrandissez à nouveau à la taille originale de l'image.

  magick rose: -scale 25%  -scale 70x46\!  rose_pixelated.gif

[IM Output] [IM Output]

Vous pouvez utiliser un masque pour combiner l'image pixellisée ci-dessus avec l'image originale, afin de « masquer » une petite partie « osée » présente dans l'image originale. Voir l'exemple Protéger l'anonymat de quelqu'un pour une démonstration de l'utilisation de cette technique. L'algorithme est aussi conçu pour boucler sur les lignes de pixels puis sur les colonnes, ce qui est inversé par rapport à « [-resize](https://imagemagick.org/command-line-options/#resize) ». Cela peut permettre à « [-scale](https://imagemagick.org/command-line-options/#scale) » de mieux gérer une image en cache disque « mpc: ». Jusqu'à IM v6.4.7, « [-scale](https://imagemagick.org/command-line-options/#scale) » contenait encore l'ancien bug du halo de redimensionnement.
Internes de Scale (mélange de pixels)...À bien des égards, l'opérateur Scale est similaire à l'opérateur Resize normal, mais utilisant un filtre de rééchantillonnage « [Box](filter.html#box) ». Cependant, il utilise en réalité un algorithme complètement différent qui est légèrement plus précis dans ses résultats que celui produit par un filtre Box. La façon dont le filtre Box fonctionne consiste à simplement moyenner tout pixel (échantillon) qui tombe dans la « fenêtre de support » du filtre (voir Contrôle expert du support de filtre. Cela signifie que lors de la réduction d'une image d'une très petite quantité, un redimensionnement filtré par Box ne produira que des valeurs de pixels exactes, ou une valeur de pixel parfaitement moyennée. L'opérateur Scale cependant utilise un algorithme différent connu sous le nom (faute d'un meilleur nom) de mélange de pixels (Pixel Mixing). Plutôt que de générer les couleurs en se basant sur une « moyenne des pixels » dans la « fenêtre de support », il utilise une « aire des pixels » plus précise dans la fenêtre de support. Par exemple, ici je prends un motif de pixels en « damier » et le réduis de 2 pixels, comparant le résultat de Scale au redimensionnement utilisant les très simples filtres Box et Triangle.
  magick -size 10x10 pattern:gray50  checks.gif
  magick checks.gif  -filter box      -resize 8x8  checks_box.gif
  magick checks.gif                   -scale  8x8  checks_scale.gif
  magick checks.gif  -filter triangle -resize 8x8  checks_triangle.gif

[IM Output]
« hachure » de 10 pixels | | [IM Output]
Redimensionnement
filtré Box | [IM Output]
Scale par
mélange de pixels | [IM Output]
Redimensionnement
filtré Triangle
---|---|---|---|---
Les images ci-dessus ont été fortement agrandies

Ce qui précède montre le résultat que vous obtenez pour « purement moyenné », vs « mélange de pixels », vs « interpolation linéaire ». Cela montre aussi comment l'opérateur Scale est en réalité similaire à celui d'un filtre Triangle, mais seulement lors de très petites réductions d'images. Dans les autres cas (forte réduction, agrandissement, ou dimensionnement par entier exact), il produira des résultats plus proches de ceux d'un filtre Box. Au fond, il génère quelque chose qui ressemble davantage à un mélange entre les filtres Box et Triangle selon la mesure exacte dans laquelle l'image est réduite. Vous voyez des effets similaires lors de l'agrandissement.

  magick -size 8x8 pattern:gray50  checks_sm.gif
  magick checks_sm.gif -filter box      -resize 10x10 checks_sm_box.gif
  magick checks_sm.gif                  -scale  10x10 checks_sm_scale.gif
  magick checks_sm.gif -filter triangle -resize 10x10 checks_sm_triangle.gif

[IM Output]
« hachure » de 10 pixels | | [IM Output]
Redimensionnement
filtré Box | [IM Output]
Scale par
mélange de pixels | [IM Output]
Redimensionnement
filtré Triangle
---|---|---|---|---
Les images ci-dessus ont été fortement agrandies

Lors de l'agrandissement, un filtre Box ne produira jamais de « pixels moyennés », seulement des duplications de lignes/colonnes de pixels. Scale cependant générera des pixels de couleur moyennée le long des bords, encore une fois à la manière d'un filtre Triangle mais sans lui être exactement identique. Bien sûr, cet effet n'est vraiment visible que pour les petits agrandissements non entiers, et pour les mises à l'échelle plus grandes, seulement le long des bords où, dans un cas plus typique, vous pouvez obtenir un ou deux pixels moyennés. En résumé : Scale est beaucoup beaucoup plus rapide que l'opérateur Resize normal, car il est moins général dans ses exigences de traitement d'image. Mais c'est aussi un algorithme complètement différent, produisant un résultat légèrement différent lorsqu'il est utilisé pour redimensionner des images avec des échelles non entières. Pour plus de détails, voir la page Mélange de pixels (Pixel Mixing), ainsi que la discussion sur les forums IM, Upscaling a few pixels linearly. Un remerciement spécial à l'utilisateur du forum atnbueno, qui a signalé la différence ci-dessus. Sample — Redimensionner par réplication/suppression de lignes/colonnesL'opérateur de redimensionnement « -sample » est l'opérateur de redimensionnement le plus rapide, surtout dans la réduction d'image à grande échelle. En fait, il est même plus rapide que l'opérateur « [-scale](https://imagemagick.org/command-line-options/#scale) » (voir ci-dessus). Lors de l'agrandissement ou de la magnification d'une image, il effectue seulement une réplication de pixels (comme pour le filtre Box), générant des « blocs » rectangulaires de couleurs de pixels. Cependant, lors de la réduction d'une image, « [-sample](https://imagemagick.org/command-line-options/#sample) » supprime simplement des lignes et des colonnes de pixels. Parce que des lignes et des colonnes entières de pixels sont simplement ajoutées ou supprimées, « [-sample](https://imagemagick.org/command-line-options/#sample) » ne générera aucune couleur nouvelle ou supplémentaire. Ce fait peut être important pour certaines techniques de traitement d'image, telles que le redimensionnement des animations GIF. Une autre façon de voir les choses est que l'image a des pixels individuels uniques « échantillonnés » selon un motif régulier très uniforme à travers toute l'image. Vous pouvez considérer l'image comme étant divisée en un tableau de régions, et un pixel de chaque région est sélectionné pour l'image résultante. Cependant, cet « échantillonnage » de pixels individuels (ou suppression complète de lignes/colonnes) peut avoir des résultats plutôt horribles, surtout pour les images contenant des lignes fines (en termes de largeur en pixels). Par exemple, ici je dessine une ligne mais je réduis ensuite la taille de l'image, ce qui aboutit à seulement une ligne de points.

  magick -size 150x60 xc: -draw 'line 0,59 149,0' line_orig.gif
  magick line_orig.gif  -sample 50x20  line_sample.gif

[IM Output] [IM Output]

C'est un effet typique que vous obtenez avec l'échantillonnage d'image, et il est connu sous le nom d'effet de crénelage sévère. Décalage du pixel échantillonnéDepuis IM v6.8.4-7, le pixel exact échantillonné dans chaque sous-région d'échantillonnage est désormais défini comme étant le pixel au point médian de chaque région (ou le pixel central en haut à gauche si la sous-région a un nombre pair de pixels). Cela signifie que si vous faites un échantillon d'un seul pixel d'une image, vous obtiendrez le pixel central de l'image. Avant IM v6.8.4-7, le pixel sélectionné était le pixel en haut à gauche de chaque région. Cependant, il y a des rapports de certaines versions où cela peut avoir été en bas à droite, ou cela peut même avoir été légèrement variable en raison de bugs.
Ce type d'information est particulièrement utile pour les images qui sont réduites par une division entière de la taille originale de l'image. Comme lorsque vous créez ou échantillonnez une image pixellisée, ou que vous désentrelacez les images d'une vidéo. Aussi, à partir de cette version, vous pouvez contrôler exactement quel pixel de chaque sous-région est sélectionné en utilisant le define « sample:offset », qui prend une ou deux valeur(s) en pourcentage ('50' par défaut pour le point médian). Notez qu'un pourcentage est utilisé car, dans le cas général, les « sous-régions d'échantillonnage » peuvent ne pas s'aligner sur les limites des pixels. C'est pourquoi un pourcentage est nécessaire et non un « décalage en pixels ». Cependant, si la taille de l'image est joliment divisible par le nombre d'échantillons, alors vous pouvez facilement calculer exactement quel pixel vous voulez de chaque sous-région. Par exemple, si une image est échantillonnée de sorte que vous ayez des sous-régions de 5 pixels, alors (par exemple, en échantillonnant une image qui fait 100 pixels de large, jusqu'à 20 échantillons de pixels), alors vous pouvez utiliser un pourcentage de décalage d'échantillonnage dans la plage de 0 à 19,9 pour sélectionner le premier pixel de chaque région, de 20,1 à 39,9 pour le deuxième, et ainsi de suite. En d'autres termes, vous pouvez utiliser une valeur en pourcentage de 10, 30, 50, 70 et 90 pour spécifier exactement quel pixel vous voulez de chaque région d'échantillonnage de taille constante. Pour en savoir plus sur les décalages d'échantillonnage, voir la discussion du forum IM Sample Points. Magnify — Mise à l'échelle de pixelsL'option « -magnify » double la taille d'une image, mais elle le fait en utilisant une technique connue sous le nom de « mise à l'échelle de pixels » utilisant l'algorithme Scale2X. Cet algorithme essaie de lisser les coins des pixels agrandis, sans ajouter de couleurs supplémentaires. Ainsi, les très petites images pixellisées s'agrandissent plus proprement, tout en conservant les couleurs originales et un « aspect pixel rétro » de l'image plus petite.
  magick -size 8x8 pattern:CrossHatch30 -virtual-pixel tile \
          -magnify -magnify -magnify magnify_crosshatch.gif

[IM Output] [IM Output]

Notez que le paramètre pixel virtuel a été utilisé pour s'assurer que magnify comprenne que cette image spécifique « s'enroule autour » des bords de l'image. Avant IM v6.8.4-10, magnify n'était qu'un enrobage autour de resize pour doubler la taille de l'image. Pas très utile et rarement utilisé. L'utilisation de la « mise à l'échelle de pixels » rend cette option beaucoup plus utile. Voir le forum des utilisateurs IM sur la mise à l'échelle de pixels (Pixel Scaling) pour plus d'informations.
Une fonction « Minify() » est aussi souvent disponible dans les API, qui réduit de moitié la taille des images mais n'est qu'un enrobage autour de resize. Cependant, « -minify » n'est pas disponible depuis l'API en ligne de commande, du moins pas au moment de la rédaction.
--- ---
Adaptive Resize — Petits redimensionnements sans flouL'opérateur « -adaptive-resize » utilise la méthode spéciale d'interpolation par maillage (Mesh) pour redimensionner les images. Par exemple, ici je redimensionne une simple ligne, en utilisant d'abord un « [-resize](https://imagemagick.org/command-line-options/#resize) » normal, puis à nouveau en utilisant « [-adaptive-resize](https://imagemagick.org/command-line-options/#adaptive-resize) ».
  magick -size 50x50 xc: -draw 'line 0,49 49,0'  line_orig2.gif
  magick line_orig2.gif           -resize 80x80  line_resize.gif
  magick line_orig2.gif  -adaptive-resize 80x80  line_adaptive.gif

[IM Output] [IM Output] [IM Output]

Si vous regardez un agrandissement des deux résultats...

[IM Output] [IM Output]

Vous pouvez voir que l'image redimensionnée de manière adaptative à droite a une apparence beaucoup plus nette et moins floue que l'image produite à gauche en utilisant l'opérateur « [-resize](https://imagemagick.org/command-line-options/#resize) » normal. Au fond, l'opérateur évite le flou excessif qu'un opérateur « [-resize](https://imagemagick.org/command-line-options/#resize) » peut produire avec des changements de couleur nets. Cela fonctionne bien pour de légers ajustements de la taille d'image, en particulier pour la magnification, et surtout avec des images présentant des changements de couleur nets. Cependant, comme avec toutes les méthodes d'interpolation de pixels, cela produira du crénelage, et des effets de Moiré lorsque les images sont agrandies ou réduites de plus de 50 %. Vous pouvez aussi générer exactement le même résultat équivalent en utilisant une opération de redimensionnement par Distort mais avec les options « -filter point -interpolate mesh ». C'est-à-dire en redimensionnant l'image à l'aide d'une simple méthode de recherche par interpolation par maillage (Mesh), plutôt qu'un filtre de rééchantillonnage plus complexe. Interpolative Resize — Redimensionner à l'aide d'une méthode d'interpolationL'opérateur « -interpolative-resize » est pratiquement identique à l'opérateur Adaptive Resize précédent. Cependant, cet opérateur utilisera le paramètre « [-interpolate](https://imagemagick.org/command-line-options/#interpolate) » courant plutôt qu'une méthode d'interpolation « Mesh » fixe.

Si vous utilisez un paramètre « [-interpolate](https://imagemagick.org/command-line-options/#interpolate) » de '[Nearest](misc.html#nearest)', vous obtiendrez essentiellement l'équivalent d'un opérateur Sample. De même, beaucoup des autres méthodes d'interpolation simples équivaudront à l'utilisation des filtres de redimensionnement interpolés équivalents. Mais il existe un certain nombre de méthodes d'interpolation telles que Mesh qui n'ont aucun équivalent en tant que filtre de redimensionnement.

C'est aussi un redimensionnement non mis à l'échelle, ce qui signifie qu'il fonctionne très bien pour les agrandissements et les réductions à petite échelle, mais lors d'une réduction de plus de 50 %, de sévères effets de crénelage peuvent apparaître, comme montré dans les autres « opérateurs de redimensionnement par échantillonnage » ci-dessus. Liquid Rescale — Découpe de couturesTout comme l'échantillonnage (Sampling) d'une image la redimensionne en supprimant ou en dupliquant directement des colonnes et des lignes entières d'une image, l'opérateur spécial d'IM « [-liquid-rescale](https://imagemagick.org/command-line-options/#liquid-rescale) » supprime ou duplique aussi des colonnes et des lignes de pixels d'une image pour la réduire/l'agrandir. La différence est qu'il essaie de le faire d'une manière plus intelligente. Premièrement, au lieu de supprimer une simple ligne de pixels, il supprime une « couture » de pixels. C'est-à-dire la colonne (ou la ligne) qui pourrait zigzaguer à travers l'image, à des angles allant jusqu'à 45 degrés. Deuxièmement, il essaie de supprimer les coutures qui ont la « moindre importance » en termes de contenu de l'image. La façon dont il sélectionne cela se fait en termes d'énergie de l'image, ou plus simplement, la quantité de changements de couleur qu'une « couture » particulière implique. La « couture » avec la plus petite quantité de changements sera supprimée en premier, suivie de coutures à plus haute « énergie », jusqu'à ce que l'image ait la taille souhaitée. Pour des informations plus détaillées sur le redimensionnement liquide et la découpe de coutures, voir Wikipedia : Seam Carving, la démonstration vidéo YouTube, et l'article PDF : Seam Carving for Content-Aware Image Resizing. Voici par exemple le logo IM redimensionné en plus petit à l'aide de l'opérateur IM « [-liquid-rescale](https://imagemagick.org/command-line-options/#liquid-rescale) ».

  magick logo: -resize 50% -trim +repage  logo_trimmed.jpg
  magick logo_trimmed.jpg  -liquid-rescale 75x100%\!  logo_lqr.jpg
  magick logo_trimmed.jpg  -sample 75x100%\!  logo_sample.jpg

[IM Output]
Original | | [IM Output]
Redimensionnement liquide | [IM Output]
Échantillonné
---|---|---|---

Remarquez comment « [-liquid-rescale](https://imagemagick.org/command-line-options/#liquid-rescale) » a préservé le magicien complexe, tout en comprimant les étoiles et la partie titre moins complexes de l'image. Il a aussi légèrement comprimé le pied droit du magicien, produisant un petit aspect irrégulier dans le bord de la cape, tout comme il l'a fait pour la baguette fine mais simple du magicien. D'un autre côté, l'image de redimensionnement par échantillonnage (Sample) a simplement supprimé des colonnes de pixels également espacées, ce qui a abouti à ce que toute l'image soit déformée de manière uniforme. Les étoiles ne sont pas préservées intactes et tous les bords présentent des effets de crénelage distincts mais uniformes. Au fond, « [-liquid-rescale](https://imagemagick.org/command-line-options/#liquid-rescale) » produira une image « comprimée » d'apparence généralement meilleure sans générer de « couleurs mélangées » supplémentaires ni flouter l'image. Cependant, vous pouvez obtenir de légers effets de crénelage localisés à un endroit (la baguette du magicien dans ce cas) plutôt que de répandre cet effet sur toute l'image. Il agrandira aussi les images, en « doublant » les coutures trouvées dans l'image.

  magick logo_trimmed.jpg  -liquid-rescale 130x100%\!  logo_lqr_expand.jpg

[IM Output] [IM Output]

Comme vous pouvez le voir, il essaie d'abord de doubler la quantité d'espace entre les différents objets (là où il le peut), en les écartant. Bien que dans ce cas, l'étoile la plus à gauche et le « m » deviennent déformés car les « coutures » traversant ces régions de « faible énergie » se regroupent. Notez cependant qu'il ne doublera chaque couture qu'une seule fois, et de ce fait la technique commence à se dégrader lorsque les images sont trop agrandies. Une meilleure méthode consiste souvent à redimensionner d'abord l'image plus grande, puis à utiliser le redimensionnement liquide pour la réduire à la taille souhaitée. Ou à utiliser « [-liquid-rescale](https://imagemagick.org/command-line-options/#liquid-rescale) » en plusieurs étapes plus petites. Pour mieux montrer l'effet de « [-liquid-rescale](https://imagemagick.org/command-line-options/#liquid-rescale) », voici une animation, où la même image est réduite jusqu'à devenir une image très fine, puis agrandie à nouveau. Cette animation a été créée à l'aide du script shell animate_lqr.

[IM Output]

Encore une fois, remarquez comment il essaie de préserver les parties les plus complexes de l'image, à mesure que l'image est comprimée dans une zone de plus en plus petite. C'est-à-dire que les espaces dans le titre sont comprimés en premier de préférence, puis le bras du magicien, puis le côté droit du magicien, laissant la partie centrale la plus complexe du magicien pour tout à la fin. Regardez surtout comment les étoiles sont poussées les unes contre les autres avant d'être finalement affectées par la suppression de pixels par rééchantillonnage qu'implémente le redimensionnement liquide. (Voir les problèmes ensuite) Vous pouvez considérer le redimensionnement liquide comme essayant de comprimer une image, comme une éponge, les zones ouvertes étant comprimées en premier laissant les parties volumineuses et plus structurées pour la fin. Problèmes de la découpe de coutures Le redimensionnement liquide, ou découpe de coutures (Seam Carving), fonctionne purement en supprimant des pixels entiers de l'image. De ce fait, comme l'échantillonnage, il ne générera ni ne fusionnera de couleurs, et les lignes droites et motifs au sein de l'image peuvent devenir fortement déformés par l'opération. Au fond, cela peut entraîner de sérieux effets de crénelage, à moins qu'une méthode de lissage ne soit aussi appliquée. Généralement cependant, les effets de crénelage seront regroupés et localisés dans les zones les moins complexes de l'image plutôt que répandus à travers l'image. C'est la seule raison pour laquelle cela fonctionne si bien ! Comme une « couture » peut zigzaguer à travers l'image, les coutures peuvent souvent, et semblent souvent, contourner les objets complexes, supprimant l'espace entre les objets avant de tenter de comprimer les objets eux-mêmes. Notez par exemple comment le mot « Image » dans la démonstration ci-dessus semble se faufiler sous les autres lettres du titre sans trop de déformation. Cependant, ce mouvement latéral est limité à des angles de 45 degrés. Pour les images avec des arrière-plans « chargés » et des objets de premier plan moins « chargés », tels que des photos contenant des visages de personnes, la fonction d'énergie peut supposer que l'objet de premier plan est moins important que l'arrière-plan. Cela entraîne de sérieux effets secondaires préjudiciables, qui peuvent nécessiter une intervention humaine pour être résolus. | _Le redimensionnement liquide est actuellement une opération hautement expérimentale ajoutée pour IM v6.3.8-4. Elle nécessite que la bibliothèque déléguée « liblqr » soit installée avant de fonctionner pour vous.

À l'heure actuelle, aucun contrôle utilisateur expert n'a été fourni. Des contrôles tels que la modification de la fonction d'énergie de contenu utilisée, ou l'utilisation d'un filtre de préservation/suppression fourni par l'utilisateur (ajustant cette fonction d'énergie), ou l'accès aux images intermédiaires découpées par couture, ainsi qu'aux fonctions que la bibliothèque fournit également. Il est supposé que de tels contrôles seront fournis à un moment donné dans le futur, à mesure que les utilisateurs les réclameront, et que nous obtiendrons davantage de contrôle interne des fonctions de la bibliothèque.

AVERTISSEMENT Ne vous attendez pas à ce que cela reste exactement tel qu'actuellement implémenté. C'est hautement expérimental, et il est prévu que cela change et s'étende en fonctionnalité._
---|---
Distort Resize — Redimensionnement libreToutes les méthodes de redimensionnement ci-dessus ont une limitation que nous avons évoquée plus tôt : elles arrondissent la taille de la nouvelle image à un nombre entier de pixels, puis associent les pixels de l'ancienne image au nouveau tableau de pixels. Cela a deux effets. Premièrement, lors du redimensionnement à une très petite taille, l'échelle X peut ne pas correspondre exactement à l'échelle Y de l'image résultante (un rapport d'aspect légèrement différent). Cette différence est mineure, et à moins que vous ne descendiez très bas, elle n'est généralement pas perceptible. L'autre effet est que vous ne pouvez pas redimensionner une image pour l'ajuster à une zone qui contient un bord de pixel partiel, ce qui peut être important dans un traitement ultérieur, tel que les superpositions d'images. Cela signifie aussi que vous ne pouvez pas utiliser le redimensionnement pour simplement décaler (translater) une image d'un demi-pixel vers la droite (sans redimensionnement réel) même si l'algorithme pourrait très facilement le faire. Avec IM v6.3.6, l'opérateur de distorsion générale « [-distort](https://imagemagick.org/command-line-options/#distort) » vous permettra de faire cela et plus encore, en utilisant sa méthode de distorsion mise à l'échelle-rotation-translation. Vous pouvez aussi le faire en utilisant une distorsion Affine basée sur les mouvements de points de contrôle. Notez cependant que, parce que le bord de l'image peut contenir des pixels partiels, l'image finale sera probablement de 2 à 3 pixels plus grande que ce à quoi vous vous attendriez probablement. Les pixels environnants supplémentaires seront mélangés selon le paramètre pixel virtuel courant, que vous définissez généralement comme transparent. Par exemple, ici je redimensionne l'image de la rose à 90 % (.9) de sa taille originale, sans rotation (0), en la réduisant autour du centre de l'image (le point de contrôle par défaut s'il n'est pas spécifié)... |

  magick rose: -alpha set -virtual-pixel transparent \
          +distort SRT '.9,0' +repage  rose_distort_scale.png

[IM Output]
Cela peut ne pas ressembler à une amélioration, en fait il a des bords flous, mais c'est un redimensionnement exact sans ajustements pour une taille d'image finale entière, exactement comme vous l'avez demandé. À cause de cela, les bords sont flous car les couleurs des pixels sont étalées sur des fractions de la taille d'un pixel, et pas seulement sur des entiers. Notez que j'ai utilisé la forme « plus » de « [+distort](https://imagemagick.org/command-line-options/#distort) » pour permettre à cet opérateur de traitement d'image de définir correctement la taille finale de l'image et le décalage sur la toile virtuelle, pour un traitement et une superposition ultérieurs. Si ce décalage n'est pas souhaité, il peut être supprimé à l'aide de l'opérateur « [+repage](https://imagemagick.org/command-line-options/#page) ». Mais s'il est laissé en place, alors l'emplacement réel de l'image sur la toile plus grande sera préservé, vous permettant de positionner exactement l'image correctement avec ses « bords flous ». Ici, je l'ai redimensionnée de sorte que le coin supérieur gauche (0,0) ait été déplacé de 0,5 pixel vers la droite (à .5,0) et le reste de l'image mis à l'échelle autour de ce point de contrôle... |

  magick rose: -alpha set -virtual-pixel transparent \
          +distort SRT '0,0  .9  0  .5,0' +repage  rose_distort_shift.png

[IM Output]
Notez que comme le bord supérieur ne s'est pas réellement déplacé, il est resté relativement net, tandis que tous les autres bords sont devenus flous. Voici un agrandissement en pixels du coin supérieur, montrant la transparence qui a été ajoutée par distort pour fournir un redimensionnement sous-pixel... |

  magick rose_distort_shift.png -crop 15x15+0+0 +repage \
          -scale 600%   rose_distort_shift_mag.png

[IM Output]
Vous pouvez voir que le bord supérieur est resté net, tandis que le gauche (et tous les autres bords) sont maintenant semi-transparents. Et c'est là tout l'intérêt. Vous avez un contrôle exact du redimensionnement, et de l'emplacement final sous-pixel de l'image résultante. Pas seulement un ajustement quantifié de l'image redimensionnée à un nombre entier de pixels. C'est-à-dire que le distort est une remise à l'échelle et un positionnement exacts de l'image à des fractions de pixel, vous permettant de l'ajuster précisément dans d'autres images. Cela peut devenir particulièrement important lors d'un travail vidéo, où un redimensionnement imprécis d'images intégrées peut produire des effets « saccadés ». | Techniquement, le redimensionnement d'image est une forme simplifiée de distorsion d'image, toutes deux étant des techniques de rééchantillonnage d'image. C'est une technique de filtrage en 2 passes très rapide, limitée à une mise à l'échelle de pixels alignée orthogonalement, et à un nombre entier de pixels dans le résultat final.
---|---
Affine, Transform Depuis IM v6.4.2-8, l'ancien paramètre « [-affine](https://imagemagick.org/command-line-options/#affine) » utilisé avec les opérateurs « [-transform](https://imagemagick.org/command-line-options/#transform) » ou « [-draw](https://imagemagick.org/command-line-options/#draw) » fournit une capacité de redimensionnement libre similaire. Cependant, en réalité, cela équivaut à appeler « [+distort](https://imagemagick.org/command-line-options/#distort) » avec une méthode de distorsion « [AffineProjection](distorts.html#affine_projection) ». Ainsi, toutes les notes précédentes sur Distort s'appliquent. Cela nécessite davantage de mathématiques, ce qui le rend difficile à utiliser pour l'utilisateur typique. Généralement, vous feriez mieux d'utiliser la méthode de distorsion ci-dessus, qui fournit un certain nombre de méthodes alternatives pour spécifier la distorsion affine à appliquer.

Distort vs Resize

Si vous voulez réellement faire une comparaison directe entre l'utilisation de Distort et de Resize, vous devrez spécifiquement limiter la distorsion de l'image, afin de correspondre exactement à l'image redimensionnée à laquelle vous la comparez. Ce n'est pas une tâche simple. Pour faciliter cela, une méthode de distorsion Resize spéciale a été ajoutée à IM v6.6.9-2. Voici par exemple où j'agrandis fortement la « rose: » intégrée en utilisant un Resize rapide, puis en utilisant Distort...

  magick rose: -filter Lanczos -resize 300x rose_resize.png

  magick rose: -filter Lanczos -distort Resize 300x rose_distort.png

[IM Text]
Resize (Lanczos - Sinc) | [IM Text]
Distort (Lanczos - Jinc)
---|---

Si vous regardez le long du bord inférieur de la rose, vous verrez que l'opérateur Distort a en réalité produit un résultat plus net et plus propre que l'opérateur Resize. Avec très peu d'artefacts de blocs qui sont courants lors de l'agrandissement des images. À part ce bord inférieur, le reste de l'image est pratiquement identique, même comparé à l'aide d'un script « [flicker_cmp](../static/img/scripts/flicker_cmp) ». Cependant, rappelez-vous que Distort est beaucoup plus lent que Resize, car il utilise une technique de rééchantillonnage par zone plus directe mais beaucoup plus complexe, sans les optimisations de vitesse en 2 passes que resize utilise. | _La vraie différence dans les deux images ci-dessus est que l'opérateur Distort utilise une méthode de filtre de rééchantillonnage par zone elliptique bidimensionnelle (aussi connue sous le nom de filtrage ou rééchantillonnage cylindrique) pour son traitement d'image. C'est plus lent que la méthode de rééchantillonnage unidimensionnelle en deux passes utilisée par toutes les autres méthodes de redimensionnement présentées dans cette section. C'est aussi pourquoi il a produit un meilleur résultat le long du bord diagonal inférieur de l'image de la rose agrandie ci-dessus. Il n'est pas limité au seul filtrage horizontal et vertical.

Vous pouvez voir les effets que cela a sur l'oscillation (ringing) dans les exemples sur les artefacts d'oscillation (Ringing).

_
---|---


Techniques de redimensionnement

Redimensionnement avec correction d'espace colorimétrique

Bien que le redimensionnement fonctionne très bien, la plupart des gens ne l'utilisent pas correctement. Même moi, j'utilise normalement simplement le redimensionnement directement sur les images, telles quelles, et donc techniquement je redimensionne les images de manière incorrecte. Les images sont généralement stockées en utilisant un espace colorimétrique « sRGB » non linéaire, ou avec une correction gamma. Voir Perception humaine des couleurs pour les détails. Mais le redimensionnement (comme la plupart des autres opérateurs de traitement d'image) est un processeur mathématiquement linéaire, qui suppose que les valeurs de l'image représentent directement une luminosité de couleur linéaire. L'espace colorimétrique « sRGB » contient essentiellement une correction gamma d'environ 2,2. En réalité, c'est plus complexe que cela, impliquant deux courbes distinctes. Voir wikipedia, sRGB et W3org, sRGB l'espace colorimétrique par défaut d'Internet. Depuis la version 6.7.5, ImageMagick suit cette convention et définit l'espace colorimétrique par défaut des images (du moins pour la plupart des formats de fichier image) comme étant sRGB. Cela signifie que nous devons simplement utiliser « [-colorspace](https://imagemagick.org/command-line-options/#colorspace) » pour transformer l'image vers un espace linéaire avant de faire le redimensionnement. L'utilisation de la correction des couleurs sur une version Q8 de basse qualité d'IM (voir Qualité) n'est pas recommandée en raison de la perte de précision qu'une telle qualité de faible mémoire entraîne.
L'image de la NASA « Earth's City Lights » est un cas très extrême où les effets d'espace colorimétrique non linéaire ont un grand impact sur les résultats du redimensionnement de l'image. Ici, nous redimensionnons directement l'image sans correction d'espace colorimétrique...
  magick earth_lights_4800.tif -resize 500 earth_lights_direct.png

[IM Text]

Et ici nous magick depuis un sRGB non linéaire, vers un RGB linéaire, puis les redimensionnons, et magick de nouveau en arrière...

  magick earth_lights_4800.tif -colorspace RGB     -resize 500    \
          -colorspace sRGB  earth_lights_colorspace.png

[IM Text]

Comme vous pouvez le voir, les « lumières » dans les images sont beaucoup beaucoup plus brillantes car elles ne sont pas autant influencées par l'espace colorimétrique non linéaire de l'image source. Bien que la plupart des images n'aient pas un impact aussi grand que celui visible ci-dessus, il est présent, et peut avoir de nombreux effets. Le principal effet que l'on peut observer des effets non linéaires du sRGB est que les couleurs plus sombres sont enregistrées comme des valeurs beaucoup plus sombres (afin d'être plus pertinentes sur le plan perceptif). Mais comme elles sont plus sombres, elles ne sont pas traitées correctement mathématiquement, donc l'image sRGB résultante est plus sombre qu'une image traitée dans un espace colorimétrique linéaire comme RGB (ou LAB ou LUV). Voir aussi Traitement des couleurs d'images réelles et Dessin avec correction gamma et d'espace colorimétrique. La même gestion correcte de l'espace colorimétrique s'applique aussi à l'utilisation de distort (filtre elliptique), au flou d'image, et peut avoir de grands effets sur la quantification d'image, le tramage et le tramage ordonné. Cela est examiné en détail dans les filtres de rééchantillonnage. AVERTISSEMENT : l'espace colorimétrique RGB peut produire des problèmes d'écrêtage le long des bords impliquant de forts changements de couleur primaire (pas seulement entre le noir et le blanc). Voir la section suivante. | |
---|---|---
Dans les versions d'IM antérieures à la v6.7.5, dans lesquelles l'espace colorimétrique d'entrée par défaut était « RGB ». L'espace colorimétrique « sRGB » signifiait en réalité « converti de sRGB vers RGB linéaire ». Le résultat était que les deux étiquettes étaient inversées ! Bizarre mais vrai. À cause de cela, les anciennes versions d'ImageMagick devaient effectuer la correction d'espace colorimétrique ci-dessus avec ces noms d'espace colorimétrique inversés. Comme ceci... |

  magick earth_lights_4800.tif -colorspace sRGB \
          -resize 500  -colorspace RGB  earth_lights_colorspace.png

* Cet exemple est obsolète ***

Notez que l'opération « -colorspace RGB » n'était pas réellement nécessaire, car elle était effectuée automatiquement lors de l'enregistrement au format de fichier image PNG. Ce qui précède a été développé à partir d'une discussion du forum IM Correct Resize.

Redimensionnement avec correction gamma

Voici comment redimensionner correctement les images en utilisant uniquement la correction gamma.

  magick earth_lights_4800.tif   -gamma 0.454545 \
          -resize 500    -gamma 2.2  earth_lights_gamma.png

[IM Text]

Une alternative à l'opération inverse gamma « -gamma 0.454545 » consiste à utiliser « -evaluate POW 2.2 ». Notez que la correction gamma n'est qu'une correspondance approximative par rapport à une conversion correcte des images depuis/vers l'espace colorimétrique sRGB, mais elle en est si proche que vous auriez du mal à voir une différence entre la correction d'espace colorimétrique et la correction gamma. La correction gamma ne touche pas non plus aux paramètres d'espace colorimétrique RGB/sRGB d'IMv7, donc elle peut être un meilleur choix lorsque la version exacte est inconnue. Vous pourriez aussi vouloir regarder l'opérateur « [-auto-gamma](https://imagemagick.org/command-line-options/#auto-gamma) », qui essaie d'ajuster l'image de manière à produire des quantités égales de zones claires et sombres (en supposant que l'image soit dans un espace colorimétrique linéaire).

Redimensionnement dans l'espace colorimétrique LAB

Un problème avec l'utilisation de sRGB, RGB ou même XYZ pour le redimensionnement ou pour tout type de traitement d'image est que les 3 canaux de couleur ne représentent pas seulement la couleur mais aussi l'intensité ou la luminosité. Cela signifie que si un canal devient déformé (par exemple en étant écrêté), la couleur du pixel sera aussi déformée et peut aboutir à un aspect bizarre. L'espace colorimétrique LAB n'est pas seulement un espace colorimétrique linéaire, mais il a été conçu de sorte que l'intensité (canal L) soit séparée des deux canaux de couleur (canaux A et B). Cela signifie que si l'un des canaux devient écrêté, il ne génère pas de dérive de couleur. Cela signifie aussi que généralement aucun des canaux n'est réellement proche des limites d'écrêtage, sauf si vous traitez spécifiquement des images en noir et blanc pur, ce qui est rare dans les images de la vie réelle. Ainsi, en traitant les images à l'aide de l'espace colorimétrique LAB, cela fonctionne en réalité mieux, et évite l'écrêtage et la dérive de couleur que vous pourriez obtenir en utilisant un espace colorimétrique RGB ou XYZ. | _Avant IM v6.7.8-2, les valeurs LAB pour les canaux A et B étaient stockées en utilisant des entiers signés, stockés dans un espace mémoire d'entiers non signés. Cela créait une discontinuité entre les valeurs négatives et positives, qui ne permettait pas au traitement normal de fonctionner, seulement aux conversions de format d'image.

Cela signifiait que dans les anciennes versions d'IM, le traitement d'image dans l'espace colorimétrique LAB ne fonctionnait pas, surtout lorsqu'une couleur impliquant à la fois des valeurs positives et négatives était concernée. C'est-à-dire lors du travail avec des couleurs qui changent entre bleu-jaune et rouge-vert.

Après cette version, les valeurs étaient stockées en interne à l'aide d'un biais de 50 %, ce qui supprimait cette discontinuité, et permettait ainsi aux opérations linéaires de fonctionner comme prévu.

_
---|---
Pour le redimensionnement impliquant des filtres de rééchantillonnage « d'accentuation » (très couramment utilisés), l'utilisation de l'espace colorimétrique Lab modérera aussi les changements d'intensité extrêmes, qui peuvent générer des artefacts d'oscillation (Ringing) trop forts (et écrêtés en plage), dans les couleurs primaires RGB. Par exemple...

  magick rose: -colorspace RGB  -filter Lanczos  -distort resize 300x \
          -colorspace sRGB rose_distort_rgb.png
  magick rose: -colorspace LAB  -filter Lanczos  -distort resize 300x \
          -colorspace sRGB rose_distort_lab.png

[IM Output]
Original | | [IM Output]
Espace colorimétrique RGB | [IM Output]
Espace colorimétrique LAB
---|---|---|---

Comme vous pouvez le voir, alors que le bord de la rose était écrêté dans l'espace colorimétrique RGB linéaire, il ne l'était pas dans l'espace colorimétrique LAB. Dans l'espace colorimétrique RGB, le bord inférieur de la rose voit un changement de couleur du blanc quasi pur au rouge quasi pur, provoquant un fort changement (négatif) dans les canaux « vert » et « bleu ». Cela produit un effet d'oscillation à « lobe négatif » très fort qui est ensuite écrêté dans l'espace colorimétrique RGB. Le résultat final est une déformation de couleur sévère, due à l'effet d'accentuation du filtre. Dans l'espace colorimétrique LAB, le passage du blanc au rouge n'est pas du tout aussi fort, ni en intensité ni dans les canaux de couleur, et donc, bien que nous obtenions une bonne accentuation dans l'intensité, ni elle ni les canaux de couleur ne sont écrêtés, évitant ainsi la déformation de couleur. Le résultat est une image redimensionnée bien meilleure, avec un effet d'accentuation plus approprié issu du filtre. Simplement en séparant l'intensité de la couleur.

Redimensionnement à l'aide de l'espace colorimétrique LUV

Depuis IM v6.7.8-8, IM implémente aussi un espace colorimétrique étroitement lié, LUV. Ils sont tous deux conçus pour être perceptivement uniformes (linéaires), et partagent même les mêmes résultats critiques de canal d'intensité « L » ou « Luminosité », bien qu'ils calculent les canaux de couleur différemment. La principale différence est que les axes de couleur de LUV ont été ajustés de manière à avoir des deltas de couleur (différences de couleur) perceptivement égaux, ce qui aboutit à une échelle de couleur légèrement différente de l'espace colorimétrique LAB, bien que l'intensité reste la même entre les deux. Voir Espace de couleur de valence chromatique d'Adams. Les résultats des redimensionnements entre LAB et LUV sont pratiquement identiques.

  magick rose: -colorspace LUV  -filter Lanczos  -distort resize 300x \
          -colorspace sRGB  rose_distort_luv.png

[IM Output]

Voir Espace colorimétrique pour plus d'informations sur ces deux espaces colorimétriques..

Résumé du redimensionnement à l'aide de différents espaces colorimétriques

Ou pourquoi ne pas utiliser LAB ou LUV pour le redimensionnement ?

Eh bien, parce que, tout comme sRGB, les espaces colorimétriques LAB et LUV sont des espaces colorimétriques perceptifs non linéaires ! Et les mathématiques n'étaient censées s'appliquer qu'à des valeurs linéaires. Par exemple, voici les résultats du redimensionnement de l'image « Earth's City Lights » dans l'espace colorimétrique « Lab ».

  magick earth_lights_4800.tif -colorspace Lab     -resize 500    \
          -colorspace sRGB  earth_lights_lab.png

[IM Text]

Le résultat est pratiquement identique à ce que vous obtenez si vous aviez redimensionné directement dans l'espace colorimétrique perceptif sRGB. Mais redimensionner dans un espace colorimétrique perceptif est-il vraiment une mauvaise chose ? En réalité, c'est un point discutable. Il semble qu'éviter l'écrêtage de canal de couleur, tandis que la dérive de couleur (changements inégaux apportés à différents canaux de couleur) est moins importante. Mais alors, les images LAB et LUV sont linéaires, perceptivement ! Ainsi, peut-être que mélanger les couleurs (ce que font réellement les filtres de rééchantillonnage) dans un espace colorimétrique linéaire-perceptif peut en fait être une bonne chose à faire. Un dernier point : le sRGB n'est perceptivement linéaire qu'en intensité le long des composantes de couleur primaire. Il n'est pas réellement perceptivement linéaire en couleur, il reste donc un mauvais espace colorimétrique pour effectuer toute forme de redimensionnement d'image. Nicolas Robidoux l'a bien résumé ainsi... _Généralement, les espaces colorimétriques en lumière linéaire (RGB linéaire et XYZ) produisent des halos sombres exagérés, et les espaces colorimétriques « perceptifs » (sRGB, LAB, LUV) produisent des halos clairs exagérés.

Si vous y réfléchissez une minute, cela a tout son sens, car les espaces colorimétriques perceptifs concentrent beaucoup de bits à l'extrémité la plus sombre du spectre d'intensité, et « creusent » l'extrémité plus claire, afin d'imiter le HVS (système visuel humain). Donc, 1 unité de débordement sombre vous emmène moins « loin » en sRGB qu'en RGB linéaire, mais 1 unité de débordement clair vous emmène moins « loin » en RGB linéaire qu'en sRGB.

La sigmoïdisation (voir ci-après) traite les débordements sombres et clairs de manière égale, et amortit généralement les extrêmes des deux.

_

Redimensionnement à l'aide d'un espace colorimétrique sigmoïdal

Dans une longue discussion sur les forums de discussion ImageMagick, Sigmoidal minimization of resampling filter haloing. Une nouvelle technique a été développée dans laquelle, plutôt que d'essayer de redimensionner les images dans un espace colorimétrique linéaire, l'image est redimensionnée dans un espace colorimétrique modifié à l'aide de l'opérateur de modification de couleur sigmoïdale ([-sigmoidal-contrast](https://imagemagick.org/command-line-options/#sigmoidal-contrast)). Cela peut réduire l'écrêtage des artefacts d'oscillation (Ringing) ou de halo extrêmes qui peuvent se développer le long des bords très nets. Par exemple, voici une séquence de techniques de redimensionnement « améliorantes », qui ont été discutées sur les forums de traitement d'image numérique...

  magick rose: -colorspace RGB  -filter Lanczos  -resize 200x \
          -colorspace sRGB rose_resize_RGB.png
  magick rose: -colorspace RGB  -filter Lanczos  -distort resize 200x \
          -colorspace sRGB rose_distort_RGB.png
  magick rose: -colorspace RGB   +sigmoidal-contrast 6.5,50% \
          -filter Lanczos  -distort resize 200x \
          -sigmoidal-contrast 6.5,50% -colorspace sRGB  rose_sigmoidal_RGB.png

[IM Output]
Resize (linéaire normal) | [IM Output]
Distort (cylindrique) | [IM Output]
Variante sigmoïdale
---|---|---

Essentiellement, ce que fait le dernier exemple ci-dessus est de diminuer le contraste de l'image, en comprimant les gris de demi-teinte dans une plage linéaire plus resserrée, tout en éloignant les valeurs extrêmes des bords d'écrêtage, avant le redimensionnement. Il supprime ensuite cette modification par la suite. Cela à son tour dé-accentue les effets extrêmes des valeurs de couleur, tout en permettant au filtre de traiter les demi-teintes de manière linéaire, afin de réduire les déformations de couleur. À bien des égards, cela ressemble au redimensionnement des images dans l'espace colorimétrique sRGB non linéaire par défaut (qui est une pratique bien trop courante), mais fonctionne tout aussi bien pour les artefacts d'oscillation clairs et sombres. C'est-à-dire que c'est symétrique sur toute la plage des valeurs de couleur, alors que le redimensionnement dans l'espace colorimétrique sRGB ne fonctionne qu'à partir de l'extrémité sombre inférieure de la plage de couleurs (valeurs bleues et vertes dans ce qui précède). C'est-à-dire que c'est une technique beaucoup plus contrôlée.Il a aussi été commenté que cette variante sigmoïdale pourrait ne bien fonctionner que pour les agrandissements. Essayez aussi différentes valeurs pour l'intensité du contraste sigmoïdal (6,5 dans ce qui précède) pour différentes images. Rappelez-vous, tout comme avec chaque technique de redimensionnement, les résultats sont hautement subjectifs, et peuvent ne pas convenir à tous les types d'images. | _La transformation sigmoïdale génère essentiellement un espace colorimétrique non linéaire spécial « fait maison », qui s'appuie sur les résultats précédents obtenus en utilisant un espace colorimétrique perceptif non linéaire (sRGB).

Notez que redimensionner (distordre) une image avec des canaux de couleur non linéaires dans l'espace colorimétrique RGB peut conduire à des résultats légèrement différents dans chaque canal de couleur. Cela aboutit à un léger décalage de couleur (par opposition à une couleur écrêtée comme nous l'avons vu plus tôt).

Ce n'est un problème qu'avec les espaces colorimétriques non linéaires à canaux mixtes couleur-intensité, tels que sRGB, ou un espace colorimétrique sigmoïdal.

_
---|---

Redimensionnement avec accentuation (USM) -- Technique de redimensionnement Photoshop

Souvent, le redimensionnement des images (que ce soit en plus petit ou en plus grand) ajoute un certain flou (artefacts de flou) à l'image. À cause de cela, beaucoup de gens aiment expérimenter avec les différents filtres (voir filtres de rééchantillonnage), pour essayer de rendre les résultats plus nets. Mais cela peut ajouter d'autres artefacts de redimensionnement aux résultats de l'image. Une méthode couramment utilisée consiste à accentuer l'image après le redimensionnement. Typiquement, cela se fait à l'aide de l'opération Unsharp, spéciale et bizarrement nommée, qui contient encore plus de contrôles pour contrôler la qualité des résultats. Par exemple, « accentuons » (unsharp) les résultats de l'image filtrée par « Spline » très floue...

  magick logo: -filter spline -resize 150x logo_spline.png
  magick logo: -filter spline -resize 150x \
          -unsharp 0x1  logo_spline_unsharp.png

[IM Output]
Spline | | [IM Output]
Accentuée
---|---|---

Comme vous pouvez le voir, accentuer l'image après le redimensionnement améliore les résultats. En regardant les étoiles et les détails du chapeau en particulier. Vous obtenez une très bonne image nette sans aucun crénelage, oscillation ni même atténuation des effets. Bien qu'un filtre Spline ne soit pas un filtre particulièrement bon au départ, cette méthode d'accentuation (en fait « d'unsharp ») fonctionnera pour N'IMPORTE QUEL filtre. Elle fournit aussi plus de contrôles pour affiner le résultat. En réalité, c'est ce que fait « photoshop » pour améliorer la qualité de ses images redimensionnées, bien que je ne sache pas quels réglages il utilise pour l'opération Unsharp. Une technique connue sous le nom d'USM Le réglage par défaut de « GIMP » (radius=6, amount=0.5, threshold=0) pour unsharp est équivalent à « -unsharp 12x6+0.5+0 », et c'est correct (à part le fait d'ignorer que GIMP fixe un rayon strict au double de sigma). Cependant, rappelez-vous que vous n'avez vraiment pas besoin de spécifier le rayon du noyau dans ImageMagick, donc une valeur de « -unsharp 0x6+0.5+0 » fonctionnera mieux. Voir aussi le sujet du forum IM unsharp parameters in GIMP. Le message Image Resizing suggère d'utiliser « -unsharp 0x0.75+0.75+0.008 » comme étant bon pour les images de plus de 500 pixels. Tandis qu'une discussion sur le forum Open Photography Downsampling with ImageMagick suggère « -unsharp 1.5x1+0.7+0.02 ».

Redimensionnement pour remplir un espace donné

En gros : redimensionner une grande image pour remplir complètement une taille d'image spécifique mais en recadrant toute partie de l'image qui ne s'ajuste pas. Depuis IM v6.3.8-3, un nouveau drapeau de redimensionnement '^' vous permettra de faire cela directement en une seule étape de redimensionnement. Ces exemples représentent une méthode alternative qui peut être utilisée par les utilisateurs de versions plus anciennes d'IM. Voir Drapeau de remplissage du redimensionnement ci-dessus.
La solution est plutôt délicate, car l'exigence normale de l'utilisateur lors du redimensionnement des images est de faire tenir l'ensemble d'une image dans une taille donnée. Comme le rapport d'aspect de l'image est préservé, cela laisse un espace supplémentaire inutilisé dans la zone que vous essayez de remplir. Ici, nous essayons de redimensionner une image pour remplir une boîte de 80x80.
  magick logo: -resize 80x80\> \
          -size 80x80 xc:blue +swap -gravity center  -composite \
          space_resize.jpg

[IM Output]
Dans ce qui précède, nous avons ajouté une toile d'arrière-plan pour rembourrer les parties inutilisées de la boîte de redimensionnement afin de montrer l'espace que nous voulions que l'image remplisse, mais il n'a pas été rempli, car il a préservé le rapport d'aspect de l'image. Maintenant, si toutes vos images sont de style paysage (elles sont plus larges que hautes), alors vous pouvez bien sûr simplement redimensionner l'image pour qu'elle s'ajuste à la hauteur ou à la largeur de la zone, puis utiliser « [-crop](https://imagemagick.org/command-line-options/#crop) » pour découper l'image afin qu'elle s'ajuste exactement. |

  magick logo:    -resize x80  \
          -gravity center  -crop 80x80+0+0 +repage   space_crop.jpg

[IM Output]
Le problème est que ce qui précède ne gérera que les images de style paysage. Cela échouera lamentablement si l'image est de style portrait (plus haute que large). Cela peut bien sûr être résolu dans un script en obtenant d'abord les dimensions de l'image, puis en choisissant la bonne méthode pour faire tenir l'image dans l'espace nécessaire. Mais une meilleure solution serait de laisser IM faire tout le travail pour toutes les images. La solution au sein d'IM consiste à traiter l'image en redimensionnant chacune de ses dimensions séparément. Puis en choisissant la plus grande image des deux résultats. Pour faciliter cela, le redimensionnement lui-même dispose d'une option de test intégrée qui ne redimensionnera une image que si cela la rend plus grande. Cela nous permet d'utiliser une solution très astucieuse à notre problème. |

  magick logo: \
          -resize x160 -resize '160x<'   -resize 50% \
          -gravity center  -crop 80x80+0+0 +repage  space_fill.jpg

[IM Output]
Dans ce qui précède, le deuxième redimensionnement de la série ne redimensionnera que si la largeur produite par le premier redimensionnement était plus petite que la zone que nous essayons de remplir. L'ordre spécifique des redimensionnements (hauteur d'abord, puis largeur) a été choisi, car la plupart des images sont des photographies qui sont généralement plus longues horizontalement. Avec l'ordre ci-dessus, un tel cas aboutira à ce que la deuxième opération de redimensionnement soit ignorée. Si vos images sont plus souvent des images portrait (plus longues verticalement), alors changez les arguments pour redimensionner l'image d'abord par la hauteur, puis par la largeur. Par exemple... |

  magick logo: \
          -resize 160x -resize 'x160<'   -resize 50% \
          -gravity center  -crop 80x80+0+0 +repage   space_fill_2.jpg

[IM Output]
Le résultat de ces deux exemples devrait être très similaire, et la commande fonctionnera pour les styles d'image paysage et portrait, bien qu'elle fonctionne mieux pour l'un d'eux. Le plus gros problème avec cette méthode est que l'image est maintenant redimensionnée 2 à 3 fois, produisant un flou supplémentaire et d'autres artefacts possibles dans le résultat final. Pour réduire cela, les redimensionnements initiaux sont effectués au double des dimensions finales, ce qui suppose que l'image originale fait au moins 3 fois ou plus la taille du résultat final souhaité. Pas un problème pour la production de vignettes, mais quelque chose à garder à l'esprit.

Redimensionnement de dessins au trait

Effectuer un fort redimensionnement d'une image contenant des lignes fines peut représenter un gros problème... Redimensionner les images en très petites vignettes fait que les lignes fines qui ne font que quelques pixels de large s'estompent et disparaissent dans l'arrière-plan. Cela peut devenir si grave que j'ai vu des vignettes d'un dessin au trait qui semblaient complètement vides ! C'est-à-dire que chaque détail du dessin original « disparaissait », rendant la vignette plutôt inutile. Si c'est un problème, il existe quelques techniques qui peuvent aider...

  • Redimensionner puis ajuster le contraste pour rendre les lignes plus visibles. Bien que cela rendra les lignes plus crénelées (en escalier). Cela a aussi des limites quant à jusqu'où cette technique peut être utilisée.
  • Flouter et appliquer un seuil à l'image (une méthode très similaire à la « dilatation » ou « érosion » morphologique) afin de rendre les lignes d'un seul pixel environ 300 % plus épaisses. Maintenant, après un redimensionnement à 1/3, l'image sera plus petite mais les lignes resteront tout aussi fortes et visibles qu'avant.
  • Épaissir les lignes en utilisant les techniques de morphologie d'épaississement (Thicken). Vous pourriez vouloir faire le redimensionnement par étapes, en épaississant et en redimensionnant l'image de 50 % à la fois jusqu'à atteindre la taille finale. Bien qu'à mesure que l'espacement entre les lignes diminue, vous pourriez constater que vous obtenez davantage une « tache » qu'un dessin au trait. C'est-à-dire que vous pourriez obtenir le problème inverse. Cependant, ajuster le rapport entre l'épaississement et le redimensionnement devrait produire un résultat acceptable.
  • Séparer le contour des lignes d'une image des zones de couleurs unies, et redimensionner chacune par des méthodes différentes (les lignes en utilisant ce qui précède). Ensuite, les deux parties peuvent être à nouveau fusionnées, vous permettant de préserver le contour des lignes de l'image. Cela reproduira en effet l'effet que vous obtenez souvent lors du redimensionnement d'images vectorielles.
  • Convertir l'image en une image vectorielle, puis redimensionner. Cela peut être délicat mais peut aussi produire le meilleur résultat possible pour le redimensionnement de dessins au trait, avec des bords parfaitement anti-crénelés (nets), et des images claires.

Si vous trouvez une autre manière de redimensionner efficacement les dessins au trait, ou si vous avez essayé certaines des techniques ci-dessus, veuillez m'en informer (ainsi que les autres utilisateurs d'IM).