Il s'agit de la commande pnmtojpeg qui peut être exécutée dans le fournisseur d'hébergement gratuit OnWorks en utilisant l'un de nos multiples postes de travail en ligne gratuits tels que Ubuntu Online, Fedora Online, l'émulateur en ligne Windows ou l'émulateur en ligne MAC OS
PROGRAMME:
Nom
pnmtojpeg - convertit l'image PNM en image JFIF ("JPEG")
SYNOPSIS
pnmtojpeg [ Options ] [ nom de fichier ]
DESCRIPTION
pnmtojpeg convertit le fichier image PBM, PGM ou PPM nommé, ou l'entrée standard si aucun fichier
est nommé, dans un fichier JFIF sur la sortie standard.
pnmtojpeg utilise la bibliothèque JPEG du groupe Independent JPEG Group pour créer le fichier de sortie. Voir
http://www.ijg.org pour des informations sur la bibliothèque.
"JFIF" est le nom correct du format d'image communément appelé "JPEG". Strictement
parlant, JPEG est une méthode de compression. Le format d'image utilisant la compression JPEG qui
est de loin le plus courant est JFIF. Il existe également un sous-format de TIFF qui utilise JPEG
compression.
EXIF est un format d'image qui est un sous-format de JFIF (à savoir, un fichier JFIF qui contient un
en-tête EXIF en tant que marqueur APP1). pnmtojpeg crée une image EXIF lorsque vous spécifiez le
-exif option.
OPTIONS
Les options de base sont :
--exif=spécif_fichier
Cette option spécifie que l'image de sortie doit être EXIF (un sous-format de JFIF),
c'est-à-dire qu'il aura un en-tête EXIF en tant que marqueur JFIF APP1. Le contenu de ce
marker sont le contenu du fichier spécifié. La valeur spéciale - signifie lire
le contenu de l'en-tête EXIF de l'entrée standard. Il est invalide de spécifier la norme
entrée pour l'en-tête EXIF et l'image d'entrée.
Le fichier EXIF commence par un champ de deux octets qui correspond à la longueur du fichier,
y compris le champ de longueur, en binaire pur, l'octet de poids fort en premier. Les
la valeur spéciale de zéro pour le champ de longueur signifie qu'il ne doit pas y avoir d'en-tête EXIF,
c'est-à-dire la même chose que non -exif option. Ceci est utile lorsque vous convertissez un fichier de
JFIF vers PNM en utilisant jpegtopnm, puis le transformer, puis le reconvertir en JFIF avec
pnmtojpeg, et vous ne savez pas s'il inclut ou non un en-tête EXIF. jpegtopnm
crée un fichier EXIF ne contenant que deux octets de zéro lorsque l'entrée JFIF
le fichier n'a pas d'en-tête EXIF. Ainsi, vous pouvez transférer n'importe quel en-tête EXIF de l'entrée
JFIF à la sortie JFIF sans vous soucier de savoir si un en-tête EXIF
existe.
Le contenu du fichier EXIF après le champ de longueur est l'octet exact pour l'octet
contenu du marqueur APP1, sans compter le champ de longueur, qui constitue le
En-tête EXIF.
--qualité=n
Mettez à l'échelle les tables de quantification pour ajuster la qualité de l'image. n est de 0 (pire) à 100 (meilleur) ;
la valeur par défaut est 75. (Voir ci-dessous pour plus d'informations.)
--niveaux de gris
--niveau de gris
Créez un fichier JFIF en niveaux de gris. Avec cette option, pnmtojpeg convertit l'entrée de couleur en
échelle de gris. Si vous ne spécifiez pas cette option, le fichier de sortie est au format couleur
si l'entrée est PPM, et le format en niveaux de gris si l'entrée est PBM ou PGM.
Dans le cas de l'entrée PPM, même si toutes les couleurs de l'image sont grises, la sortie est
au format couleur. Bien sûr, les couleurs sont toujours grises. La différence est
ce format de couleur prend beaucoup plus de place et prend plus de temps à créer et à traiter.
--optimiser
Effectuer l'optimisation des paramètres de codage entropique. Sans cela, pnmtojpeg Usages
paramètres d'encodage par défaut. --optimiser rend généralement le fichier JFIF un peu
plus petit, mais pnmtojpeg fonctionne un peu plus lentement et a besoin de beaucoup plus de mémoire. Image
la qualité et la vitesse de décompression ne sont pas affectées par --optimiser.
--progressive
Créez un fichier JPEG progressif (voir ci-dessous).
--commentaire=texte
Inclure un marqueur de commentaire dans la sortie JFIF, avec le texte du commentaire texte. Sans cela
option, il n'y a pas de marqueurs de commentaires dans la sortie.
Le manuel de formation --qualité L'option vous permet d'échanger la taille du fichier compressé contre la qualité du
image reconstruite : plus le paramètre de qualité est élevé, plus le fichier JFIF est volumineux et
plus près l'image de sortie sera à l'entrée d'origine. Normalement, vous voulez utiliser le
paramètre de qualité la plus basse (le plus petit fichier) qui décompresse en quelque chose visuellement
indiscernable de l'image originale. À cette fin, le paramètre de qualité doit être
entre 50 et 95 ; la valeur par défaut de 75 est souvent à peu près correcte. Si vous voyez des défauts à
--qualité=75, puis augmentez 5 ou 10 comptes à la fois jusqu'à ce que vous soyez satisfait du résultat
image. (Le réglage optimal variera d'une image à l'autre.)
--qualité=100 génère une table de quantification de tous les 1, minimisant la perte dans le
pas de quantification (mais il y a toujours une perte d'information dans le sous-échantillonnage, ainsi qu'un arrondi
Erreur). Ce paramètre est principalement intéressant à des fins expérimentales. Valeurs de qualité
au-dessus d'environ 95 sont pas recommandé pour une utilisation normale ; la taille du fichier compressé augmente
considérablement pour pratiquement aucun gain dans la qualité de l'image de sortie.
Dans l'autre sens, des valeurs de qualité inférieures à 50 produiront de très petits fichiers de faible image
qualité. Des réglages autour de 5 à 10 peuvent être utiles pour préparer l'index d'une grande image
bibliothèque, par exemple. Essayer --qualité=2 (ou presque) pour des effets cubistes amusants. (Noter:
les valeurs de qualité inférieures à environ 25 génèrent des tables de quantification de 2 octets, qui sont considérées
en option dans la norme JFIF. pnmtojpeg émet un message d'avertissement lorsque vous donnez un tel
valeur de qualité, car certains autres programmes JFIF peuvent être incapables de décoder le résultat
fichier. Utilisation --ligne de base si vous devez garantir la compatibilité à des valeurs de faible qualité.)
Le manuel de formation --progressive L'option crée un fichier "JPEG progressif". Dans ce type de fichier JFIF,
les données sont stockées dans plusieurs scans de qualité croissante. Si le fichier est en cours
transmis sur une liaison de communication lente, le décodeur peut utiliser le premier balayage pour afficher
une image de mauvaise qualité très rapidement, et peut alors améliorer l'affichage à chaque
analyse. L'image finale est exactement équivalente à un fichier JFIF standard de même qualité
et la taille totale du fichier est à peu près la même - souvent un peu plus petite. Prudence :
JPEG progressif n'est pas encore largement mis en œuvre, de nombreux décodeurs seront donc incapables d'afficher un
fichier JPEG progressif du tout.
Options pour les utilisateurs avancés :
--dct=entier
Utiliser la méthode DCT entière (par défaut).
--dct=rapide
Utilisez le DCT entier rapide (moins précis).
--dct=flottant
Utilisez la méthode DCT à virgule flottante. La méthode float est très légèrement plus précise
que la méthode int, mais est beaucoup plus lente à moins que votre machine n'ait un flottement très rapide-
matériel de pointe. Notez également que les résultats de la méthode à virgule flottante peuvent varier
légèrement sur les machines, tandis que les méthodes entières devraient donner les mêmes résultats
partout. La méthode des entiers rapides est beaucoup moins précise que les deux autres.
--restart=n
Émettre un marqueur de redémarrage JPEG tous les n lignes MCU, ou chaque n MCU bloque si vous ajoutez B
au nombre. --redémarrage 0 (la valeur par défaut) signifie qu'il n'y a pas de marqueurs de redémarrage.
--lisse=n
Lisser l'image d'entrée pour éliminer le bruit de tramage. n, allant de 1 à 100,
indique la force du lissage. 0 (valeur par défaut) signifie pas de lissage.
--maxmémoire=n
Définissez une limite de quantité de mémoire à utiliser pour le traitement d'images volumineuses. La valeur est dans
des milliers d'octets, ou des millions d'octets si vous ajoutez M au nombre. Pour
Par exemple, --max=4m sélectionne 4,000,000 octets. Si pnmtojpeg a besoin de plus d'espace, il sera
utiliser des fichiers temporaires.
--verbeux
Imprimez dans le fichier d'erreur standard les messages concernant le processus de conversion. Ceci peut
être utile dans le débogage des problèmes.
Le manuel de formation --redémarrage l'option dit pnmtojpeg pour insérer des marqueurs supplémentaires qui permettent à un décodeur JPEG de
resynchroniser après une erreur de transmission. Sans marqueurs de redémarrage, tout dommage à un
fichier compressé ruinera généralement l'image du point de l'erreur à la fin de la
image; avec les marqueurs de redémarrage, les dommages sont généralement limités à la partie de l'image vers le haut
au prochain marqueur de redémarrage. Bien entendu, les marqueurs de redémarrage occupent un espace supplémentaire. Nous
recommander --restart=1 pour les images qui seront transmises sur des réseaux peu fiables tels
comme Usenet.
Le manuel de formation --lisse L'option filtre l'entrée pour éliminer le bruit à petite échelle. C'est souvent utile
lors de la conversion d'images tramées en JFIF : un facteur de lissage modéré de 10 à 50 élimine
de motifs de tramage dans le fichier d'entrée, résultant en un fichier JFIF plus petit et un meilleur
à la recherche d'image. Un facteur de lissage trop important rendra cependant visiblement flou l'image.
Options pour les assistants :
--ligne de base
Forcer la génération de tables de quantification compatibles avec la ligne de base. Cette pince
valeurs de quantification à 8 bits même avec des paramètres de faible qualité. (Ce commutateur est mal
nommé, car il ne garantit pas que la sortie est réellement JPEG de base. Pour
Par exemple, vous pouvez utiliser --ligne de base et --progressive ensemble.)
--qtables=spécif_fichier
Utilisez les tables de quantification fournies dans le fichier texte spécifié.
--qslots=n[,...]
Sélectionnez la table de quantification à utiliser pour chaque composante de couleur.
--échantillon=HxV[,...]
Définissez les facteurs d'échantillonnage JPEG pour chaque composante de couleur.
--scans=spécif_fichier
Utilisez le script d'analyse fourni dans le fichier texte spécifié. Voir ci-dessous pour plus d'informations sur
numériser les scripts.
Les options "assistant" sont destinées à l'expérimentation avec JPEG. Si vous ne savez pas quoi
Tu es en train de faire, ne le font pas utilisé le point de vue de . Ces commutateurs sont documentés plus loin dans le fichier
Wizard.doc fourni avec la bibliothèque JPEG de l'Independent JPEG Group.
EXEMPLES
Cet exemple compresse le fichier PPM foo.ppm avec un facteur de qualité de 60 et enregistre le
sortie en tant que foo.jpg :
pnmtojpeg --qualité=60 foo.ppm > toto.jpg
cat foo.bmp | bmptoppm | pnmtojpeg > toto.jpg
ASTUCES
JFIF n'est pas idéal pour les dessins animés, les dessins au trait et autres images qui n'ont que quelques
couleurs distinctes. Pour ceux-là, essayez plutôt pnmtopng or ppmtobmp. Si vous avez besoin de convertir
une telle image à JFIF, cependant, vous devriez expérimenter avec pnmtojpeg's --qualité et
--lisse options pour obtenir une conversion satisfaisante. --lisse 10 ou alors est souvent utile.
La compression JPEG est connue pour être "avec perte". Cela signifie que, contrairement à la plupart des
conversions graphiques, vous perdez des informations, ce qui signifie une qualité d'image, lorsque vous convertissez en
JFIF. Si vous convertissez de PPM en JFIF et inversement, la perte de qualité d'image sera
accumuler. Après une dizaine de cycles, l'image peut être sensiblement pire qu'elle ne l'était après
un cycle.
Pour cette raison, vous devriez faire toutes les manipulations que vous avez à faire sur l'image dans certains
autre format et convertir en JFIF comme dernière étape. Et si vous pouvez garder une copie dans le
format original, tant mieux. PNG est un bon choix pour un format sans perte,
mais assez compact. GIF est une autre façon de procéder, mais il est probable que vous ne puissiez pas créer de GIF
image sans devoir beaucoup d'argent à Unisys et IBM, détenteurs de brevets sur le LZW
compression utilisée dans le format GIF.
Le manuel de formation --optimiser Option de pnmtojpeg vaut la peine d'être utilisé lorsque vous faites une version "finale"
pour publication ou archivage. C'est aussi une victoire lorsque vous utilisez des paramètres de faible qualité pour faire
très petits fichiers JFIF ; le pourcentage d'amélioration est souvent bien supérieur à ce qu'il est sur les plus grands
des dossiers. (Maintenant, --optimiser est automatiquement activé lorsque vous générez un
fichier JPEG progressif).
Un autre programme, cjpeg, est similaire. cjpeg est maintenu par le groupe indépendant JPEG et
emballé avec la bibliothèque JPEG qui pnmtojpeg utilise pour tout son travail JPEG. En raison de
cela, vous pouvez vous attendre à ce qu'il exploite des fonctionnalités JPEG plus actuelles. Aussi, puisqu'il faut
avoir la bibliothèque à exécuter pnmtojpeg, mais pas l'inverse, cjpeg peut être plus communément
disponible.
D'autre part, cjpeg n'utilise pas les bibliothèques NetPBM pour traiter son entrée, car tous
les outils NetPBM tels que pnmtojpeg faire. Cela signifie qu'il est moins susceptible d'être cohérent avec
tous les autres programmes qui traitent les formats NetPBM. De plus, la syntaxe de commande de
pnmtojpeg est cohérent avec celui des autres outils Netpbm, contrairement cjpeg.
SCAN ÉCRITURES
Utilisez l'option -analyse option pour spécifier un script d'analyse. Ou utilisez le -progressive possibilité de spécifier
un script d'analyse intégré particulier.
Ce qu'est un script d'analyse et le format de base du fichier de script d'analyse sont décrits dans
le assistant.doc fichier fourni avec la bibliothèque JPEG de l'Independent JPEG Group. Analyse
les scripts sont les mêmes pour pnmtojpeg comme le sont pour cjpeg.
Cette section contient des informations supplémentaires qui ne sont pas, mais devraient probablement être, dans ce
document.
Premièrement, il existe de nombreuses restrictions sur ce qu'est un script d'analyse valide. La bibliothèque JPEG, et
ainsi pnmtojpeg, vérifie minutieusement tout manquement à ces restrictions, mais
fait peu pour vous dire comment le script ne se conforme pas. Les messages sont très généraux et
parfois faux.
Pour commencer, les entrées pour le coefficient DC doivent venir avant toutes les entrées pour le AC
coefficients. Le coefficient DC est le coefficient 0 ; tous les autres coefficients sont AC
coefficients. Ainsi, dans une entrée pour le coefficient DC, les deux nombres après les deux points doivent
être 0 et 0. Dans une entrée pour les coefficients AC, le premier nombre après les deux points ne doit pas être
0.
Dans une entrée DC, les composantes de couleur doivent être dans l'ordre croissant. Par exemple "0,2,1" avant le
le côlon est faux. Ainsi est "0,0,0, XNUMX".
Dans une entrée pour un coefficient AC, vous ne devez spécifier qu'une seule composante de couleur. C'est-à-dire là
peut être un seul nombre avant les deux points.
Dans la première entrée pour un coefficient particulier pour une composante de couleur particulière, le "Ah"
La valeur doit être zéro, mais la valeur Al peut être n'importe quel numéro de bit valide. Dans les entrées suivantes,
Ah doit être la valeur Al de l'entrée précédente (pour ce coefficient pour cette couleur
composante) et la valeur Al doit être inférieure de un à la valeur Ah.
Le script doit finalement spécifier au moins une partie du coefficient DC pour chaque couleur
composant. Sinon, vous obtenez le message d'erreur "Le script ne transmet pas toutes les données".
Vous n'avez pas besoin de spécifier tous les bits du coefficient DC, ni aucun des coefficients AC.
Il existe une option standard dans la construction de la bibliothèque JPEG pour omettre la capacité de script de numérisation.
Si pour une raison quelconque votre bibliothèque a été construite avec cette option, vous obtenez le message "Demandé
fonctionnalité a été omise au moment de la compilation."
ENVIRONNEMENT
JPEGMEM
Si cette variable d'environnement est définie, sa valeur est la limite de mémoire par défaut. Les
la valeur est spécifiée comme décrit pour le --maxmémoire option. Un explicite
--maxmémoire l'option remplace tout JPEGMEM.
Utilisez pnmtojpeg en ligne en utilisant les services onworks.net