0 votes

L'image PNG redimensionnée ou pivotée avec ImageMagic est floue. Comment l'accentuer ?

Lorsque j'essaie de redimensionner (rétrécir, dans ce cas) et/ou de faire pivoter un fichier PNG, celui-ci devient très flou. En plus de ne pas vouloir d'une image floue (évidemment), c'est en fait critique car il s'agit d'étiquettes d'expédition avec des codes à barres et l'image est si mauvaise que les lecteurs de codes à barres ont des difficultés à les lire.

La commande que j'utilise est

% convert input_file.png -resize 288 -rotate -90 output_file.png
  • -resize 288 redimensionner à une largeur de 288 pixels (4 pouces) en conservant le rapport d'aspect. 288 est le nombre de pixels pour une résolution de 72DPI (impression).
  • -rotate -90 fait pivoter toute l'image de 90° dans le sens inverse des aiguilles d'une montre

Le fichier que vous recevez d'eBay, de USPS Click-n-Ship ou de PayPal est une étiquette de 4 x 6 pouces au format PNG ou PDF. Je choisis le format PNG car j'ai besoin de le faire pivoter car j'utilise mon imprimante laser avec des étiquettes de taille lettre ( Avery 8127 ). Je dois le redimensionner car le PNG qu'ils fournissent est énorme ! En regardant la taille dans l'aperçu, elle est de 17x25 pouces.

J'ai fait de nombreuses recherches à ce sujet, mais les solutions que j'ai trouvées n'améliorent que marginalement la netteté de l'image. Le résultat final est que, selon le lecteur de codes à barres, il peut ou ne peut pas le lire. Par exemple, j'ai deux lecteurs - un simple lecteur de codes à barres Symbol 2D qui échoue le plus souvent. En revanche, mon lecteur Focus 3D, plus coûteux, le lira plus souvent, mais échouera encore parfois.

Aucune d'entre elles n'a fonctionné.

J'avais l'impression que si je réduisais une image, je ne perdrais pas en qualité, mais cela ne semble pas être le cas. Ma question est donc la suivante : comment puis-je redimensionner cette image pour en conserver la qualité ?

1voto

Douglas Points 10417

L'astuce consiste à augmenter la densité (résolution) de l'image originale avant d'effectuer tout autre traitement comme le redimensionnement ou la rotation.

% convert -density 300 inputfile.png inputfile.png

Normalement, il serait nécessaire de spécifier les unités ( -units PixelsPerInch o -units PixelsPerCentimeter ) en même temps que la densité, mais comme Les fichiers PNG utilisent uniquement l'unité pixels/cm. ce n'est pas nécessaire ici.

La raison pour laquelle nous devons faire cela est que pour redimensionner une image, elle doit passer par un (ou plusieurs) de plusieurs filtres (algorithmes). Avec une faible résolution (comme 72 dpi pour l'impression), il n'y a tout simplement pas assez de données à utiliser par les algorithmes pour leurs calculs. ImageMagick comporte une longue section sur le redimensionnement et les différents filtres que vous pouvez utiliser et leur fonctionnement : https://legacy.imagemagick.org/Usage/resize/#other . Malheureusement, aucune ne fonctionnait assez bien jusqu'à ce que je me rende compte que les données de l'image étaient tout simplement trop "fines".

En ne faisant rien d'autre qu'augmenter la densité, nous donnons essentiellement au même élément (une seule ligne de code-barres, par exemple) plus de points de données sur lesquels travailler lorsque nous manipulerons l'image par la suite. Plus il y en a, plus l'image peut être précise, mais la contrepartie est la vitesse. Le traitement sera plus long.

En procédant d'abord à cette opération, puis en manipulant l'image, j'ai pu obtenir une image claire et nette à la taille requise pour l'impression sur mon imprimante laser. L'autre option qui s'offrait à moi était d'acheter une imprimante d'étiquettes dédiée (comme les imprimantes Zebra ou Brother) afin de pouvoir utiliser le PDF de haute qualité qu'elles fournissent.

Vous trouverez ci-dessous une description plus détaillée de la manière de manipuler l'image pour obtenir le résultat souhaité.


Si nous regardons la résolution du fichier image original ( identify -ping -verbose image.png | head ) nous voyons qu'il est réglé pour une résolution de 28,35x28,35 ppcm et une taille d'impression de 42,328cm x 63,4921cm (16,66" x 25").

  Filename: sample_label_orig.png
  Format: PNG (Portable Network Graphics)
  Mime type: image/png
  Class: PseudoClass
  Geometry: 1200x1800+0+0
  Resolution: 28.35x28.35
  Print size: 42.328x63.4921
  Units: PixelsPerCentimeter
  Colorspace: Gray

Comme tout est métrique, pour convertir en pouces, il faut multiplier par 2,54. 28 ppcm se traduisent par 72 ppi (ou 72 DPI). C'est censé être le DPI correct pour l'impression.

Vous pouvez utiliser le même nom de fichier pour l'entrée et la sortie afin que les changements soient effectués "en place". J'utilise un fichier séparé pour cet exemple.

% convert -density 300 sample_label_orig.png sample_label.png 

Lorsque la densité/résolution est portée à 300 ppcm, tout se met en place. Cependant, ne vous laissez pas tromper par la nouvelle taille d'impression : elle est de 4 cm x 6 cm et non de 4" x 6" !

  Filename: sample_label.png
  Format: PNG (Portable Network Graphics)
  Mime type: image/png
  Class: PseudoClass
  Geometry: 1200x1800+0+0
  Resolution: 300x300
  Print size: 4x6
  Units: PixelsPerCentimeter
  Colorspace: Gray

Maintenant, au lieu de redimensionner l'étiquette, nous spécifions simplement la nouvelle géométrie de l'étiquette. Notez que géométrie et non la taille d'impression de l'étiquette. Il s'agit des dimensions de l'étiquette multipliées par la densité. Ainsi, une étiquette de 4x6 pouces ferait 10,16x15,24 cm, ce qui signifie que la géométrie finale serait de 300*(10,15x15,24) = 3048x4572.

% convert sample_label.png -geometry 3048x4572 label_out.png

Maintenant, lorsque nous regardons les détails de l'étiquette ( identify -ping -verbose label_out.png | head ), tout est comme il se doit. Il s'agit d'une étiquette de 4x6 pouces (convertie en cm) avec une résolution de 300 ppcm.

  Filename: label_out.png
  Format: PNG (Portable Network Graphics)
  Mime type: image/png
  Class: PseudoClass
  Geometry: 3048x4572+0+0
  Resolution: 300x300
  Print size: 10.16x15.24
  Units: PixelsPerCentimeter
  Colorspace: Gray

Nous pouvons même faire pivoter l'étiquette en même temps que nous modifions la géométrie pour rendre le processus plus efficace.

% convert sample_label.png -geometry 3048x4572 -rotate -90 label_out.png

Vous obtiendrez ainsi une étiquette claire et nette, orientée correctement pour être imprimée sur l'imprimante laser.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X