Dans GIMP, il existe un moyen très simple de faire ce que je veux. Je n'ai que la boîte de dialogue allemande installée mais je vais essayer de la traduire. Je parle d'aller à Picture -> PrintingSize
et ensuite d'ajuster les valeurs X-Resolution
et Y-Resolution
que je connais comme les valeurs dites DPI. Vous pouvez également choisir le format qui est par défaut Pixel/Inch
. (En allemand le dialogue est Bild -> Druckgröße
et là X-Auflösung
et Y-Auflösung
)
Ok, les valeurs y sont souvent 72
par défaut. Lorsque je les change en exemple, 300
cela a pour effet que l'image reste la même sur l'ordinateur, mais si je l'imprime, elle sera plus petite si vous la regardez, mais tous les détails sont toujours là, juste un peu plus petits -> ça a une résolution plus élevée sur le papier imprimé (mais de plus petite taille ... ce qui me convient).
Je le fais souvent lorsque je travaille avec LaTeX, ou pour être exact avec la commande pdflatex
d'une machine Ubuntu récente. Lorsque je fais manuellement le processus ci-dessus avec GIMP, tout fonctionne correctement. Les images apparaîtront plus petites dans le PDF résultant, mais avec une qualité d'impression élevée.
Ce que je cherche à faire est d’automatiser le processus d’ouverture de GIMP et d’ajuster les valeurs DPI. Comme ImageMagick est réputé pour être superbe et que je l’ai utilisé pour de nombreuses autres tâches, j’ai essayé d’atteindre mon objectif avec cet outil. Mais ça ne fait tout simplement pas ce que je veux.
Après avoir essayé beaucoup de choses, je pense que c'est en fait la commande qui devrait être mon ami:
convert input.png -density 300 output.png
Cela devrait régler le DPI à 300, comme je peux le lire partout sur le Web. Cela semble fonctionner. Mais lorsque je vérifie le fichier, il reste le même (EDIT: ce que j’attends, comme expliqué ci-dessus).
file input.png output.png
input.png: PNG image data, 611 x 453, 8-bit grayscale, non-interlaced
output.png: PNG image data, 611 x 453, 8-bit grayscale, non-interlaced
Quand j'utilise cette commande, il me semble que c'est ce que j'ai voulu:
identify -verbose output.png | grep 300
Resolution: 300x300
PNG:pHYs : x_res=300, y_res=300, units=0
Assez drôle, la même sortie vient pour input.png
ce qui me trouble ... alors ce pourrait être les mauvais paramètres à surveiller?
Mais quand je rends maintenant mon TeX avec pdflatex
l’image, elle est toujours grosse et floue. De plus, lorsque j'ouvre à nouveau l'image avec GIMP, les valeurs DPI sont définies sur au 72
lieu de 300
. Donc, il n'y a pas eu d'effet du tout.
Maintenant, quel est le problème ici. Est-ce que je me trompe complètement? Je ne peux pas me tromper car tout fonctionne parfaitement avec GIMP.
Merci pour toute aide dans ce domaine. Je suis également ouvert à d'autres solutions automatisées faciles à mettre en œuvre sur un système Linux.
la source
^
icône à gauche de sa réponse), pas seulement «l'accepter» dès que vous avez assez de réputation personnelle (je pense que vous avez besoin +15) ...Réponses:
Spécifiez les unités - je semble me souvenir avoir eu un problème lorsque j'ai omis cette option (bien que DPI devrait être la valeur par défaut), par exemple:
Savez-vous quels champs de données intégrées GIMP utilise pour lire la résolution - a-t-il ses propres champs qui remplacent les champs standard utilisés par ImageMagick? Par exemple, Photoshop utilise
Photoshop:XResolution
etPhotoshop:YResolution
vous devez donc les configurer pour qu'il reconnaisse un paramètre de densité (ImageMagick ne peut pas le faire - nous utilisons ExifTool).la source
-density 300
avantinput.png
. Je convertissais des PDF. Merci quand même.-set units PixelsPerInch -density 300
, simple-units
ne fonctionnait pas, quel que soit l’ordre des options.Notez que vous pouvez utiliser Exiftool pour lire les résolutions. Par exemple,
Exiftool '-*resolution*' c.jpg
pourrait montrerUnité de résolution: pouces X résolution: 300 Y résolution: 300
Exiftool est également capable de définir des paramètres, mais comme indiqué dans la page de manuel
Image::ExifTool::TagNames
, les balises supplémentaires XResolution et YResolution ne sont pas inscriptibles dans Exiftool.Je ne sais pas si ImageMagick a des options de changement de résolution, mais je serais surpris de ne pas le faire. En outre, il est simple d'écrire des scripts GIMP pour automatiser de telles tâches, et il est également possible de changer les résolutions avec de petits programmes. Par exemple, voici un programme en C (compilable via
gcc setRes.c -O3 -Wall -o setRes
) qui lit les premiers octets d’un fichier jpeg, modifie la résolution en 300 et les réécrit. Le programme illustré utilise des constantes pour les machines little-endian, telles que x86. Si elle est exécutée sur une machine big-endian, elle devrait se terminer par un message commeError: xyz may be not a .jpg file
, même si xyz est un fichier jpeg. Remarque, je n'ai pas testé les images résultantes viapdflatex
; vous trouverez probablement utile de poser une question dans le tex SE .la source
Je ne pouvais pas comprendre comment convaincre convertir pour ajouter uniquement les métadonnées et ne pas ré-encoder mon bitmap [monochrome]; il s'agissait d'élargir le fichier> 50%.
J'ai découvert que pngcrush (et non un outil ImageMagick) peut également ajouter les métadonnées de densité. Cette ligne de commande le marque à 600 dpi et permet d'autres optimisations, ce qui réduit la taille du fichier d'environ 10%:
la source
"Je souhaite modifier le DPI avec Imagemagick sans changer la taille en octets réelle des données d'image."
C'est complètement impossible!
Car:
En outre, vous ne semblez pas comprendre ce qu'est le DPI en réalité:
72dpi
.288dpi
.288dpi
sur un carré de 1 pouce, ce n’est plus la même image: elle aura subi une extrapolation à travers le pilote de l’imprimante ou un autre mécanisme de filtrage, et sera devenue une image de 288x288 pixels au lieu de une image de 72x72 pixels ... )Si vous souhaitez imprimer l'image d'origine de 72 x 72 pixels sous la forme d'un carré large d'un pouce, mais au lieu de
288dpi
, vous devrez redimensionner l'image (dans ce cas, en la redimensionnant). Pour chaque pixel de l'original, vous aurez besoin de 4 pixels de la nouvelle image redimensionnée. Maintenant, il existe différents algorithmes qui peuvent être utilisés pour calculer les valeurs de couleur que ces 4 pixels (dont 3 nouveaux pixels) doivent avoir:Dans tous les cas, vous créez une image plus grande composée de 288 lignes de pixels de 288 pixels de haut (288x288 pixels).
Ce que Gimp fait pour vous lorsque vous passez par "Image -> Taille d'impression": cela simplifie le processus de calcul à nouveau des modifications requises dans les tailles de pixels absolues, ce qui le rend plus convivial. Dans ce but...
cm
,mm
ouinch
) l'impression doit apparaître sur le papier.En fonction de ces deux informations, Gimp calcule ensuite le nombre total de pixels qu’il doit utiliser (extrapoler à partir du nombre de pixels initial) pour remplir l’espace demandé à la résolution demandée.
Cependant, le fait de redimensionner une image raster en lui faisant contenir plus de pixels n’ajoute pas de véritables informations, mais ajoute simplement une "qualité" fictive. Cela peut sembler plus agréable à l'œil humain si votre algorithme de mise à l'échelle est «bon». Et cela aura l'air moche, si vous doublez, tripler ou quadrupler les pixels existants, comme le font certains algorithmes simples.
Pour les images raster,
le paramètre PPP n'est pertinent que dans le contexte de son impression ou de son affichage . Parce que les imprimantes ou les moniteurs ont donné des résolutions fixes. Par conséquent, c'est l'info que ...
dois savoir.
Et la documentation d'ImageMagick est tout à fait en accord avec moi:
Pour les images vectorielles ou les formats de fichier
(tels que PDF ou PostScript), le paramètre DPI est toutefois extrêmement important dans le contexte deleur tramage . Une résolution plus élevée transférera plus d'informations d'image dans le format de trame et préservera ainsi plus de détails de la qualité d'origine réelle. Lors de la conversion d'une image vectorielle d'une taille donnée
mm
,cm
ouinch
en raster avec une résolution plus élevée, se traduira directement par un nombre plus élevé de pixels au total dans l'image.En outre, ImageMagick ne prend pas en charge l'impression en tant que telle. Au lieu de cela, ImageMagick uniquement ...
... mais pour imprimer les images manipulées, vous devez utiliser un programme différent.
Certains formats d'image (TIFF, PNG, ...) prennent en charge l'enregistrement interne d'un paramètre DPI dans leurs métadonnées.
Mais il ne s'agit que d'un attribut «conseil» qui ne modifie pas l'image raster sous-jacente. C'est la raison pour laquelle vous avez fait cette découverte:
Ce «conseil» peut éventuellement être évalué automatiquement par des pilotes d’imprimante ou par des programmes de création de pages tels que LaTeX. En l'absence de telles "indications" DPI (ou si elles ne se présentent pas comme prévu par LaTeX), il devrait toujours être possible de donner à LaTeX le droit de rendre toute image donnée sur une page comme on l'attend. to - il faut juste un peu plus de code LaTeX explicite autour de l'image!
Certains autres formats d'image (JPEG (?), BMP, ...) ne permettent même pas de stocker un indice DPI pour leurs métadonnées internes.
Donc, Gimp ne supporte que ce que vous voyez qu'il fait avec "Image -> Taille d'impression" parce qu'il veut imprimer une image. Avec ImageMagick, vous ne pouvez pas imprimer.
Continuez à faire ce que vous voulez faire avec Gimp lorsque vous imprimez. Cela n’a aucun sens avec ImageMagick.
Reportez-vous également à cet extrait de documentation de messagerie instantanée supplémentaire , qui explique le même sujet avec des termes différents.
Donc ce qui reste est ceci:
Veuillez fournir les éléments suivants pour résoudre le problème ci-dessus:
convert -version
andconvert -list configure
);De cette façon, nous pouvons aider à résoudre le problème.
Mais remarque: il s'agit d'un problème différent de celui de votre sujet / titre actuel: "Je souhaite modifier le DPI avec Imagemagick sans modifier la taille en octets réelle des données d'image".
Mise à jour
Comme certains lecteurs ne savent toujours pas ce que j'ai noté ci-dessus, voici une autre tentative ...
Tout ce qui est noté comme "Résolution" ou "Densité" dans un fichier image est un attribut de métadonnées . Cela n'a aucune influence sur le nombre de pixels réels décrits par le fichier et n'a aucune pertinence à cet égard. C'est simplement un indice qu'un périphérique d'impression ou de rendu ou une application peut ou non suivre lors de l'impression, du rendu ou de l'affichage de l'image.
À cette fin, il ne s’agit que de quelques chiffres stockés dans le fichier image. Ces chiffres indiquent aux périphériques de sortie tels que les imprimantes et affichent combien de points (ou pixels) par pouce l'image doit être affichée. Pour les formats vectoriels tels que PostScript, PDF, MWF et SVG, il indique l’échelle de pixel pour dessiner les coordonnées du monde réel utilisées par l’image.
Adobe Photoshop est un exemple dans lequel la valeur de résolution indiquée par ImageMagick dans les métadonnées de l'image n'est PAS honorée par une application. Photoshop stocke ses astuces sur la résolution d'impression ou d'affichage souhaitée dans un profil propriétaire nommé 8bim . ImageMagick ne touche pas ce profil, même lorsqu'il vous est demandé d'écrire un changement de résolution dans les métadonnées d'un fichier image. D'autre part, Photoshop ignorera toutes les astuces de résolution stockées par ImageMagick dans le champ de métadonnées par ailleurs standard défini à cet effet dès qu'il verra son propre profil 8bim .
Le PO aurait dû choisir la rubrique:
afin d'éviter tout malentendu ...
la source