7
votes

Manière simple d'ajouter une image dans PostScript

J'essaie d'écrire un document dans PostScript.

Jusqu'à présent, j'ai pu écrire de texte simple et travailler avec des lignes et des formes. P>

J'essaie maintenant d'ajouter quelques images au document. Après avoir cherché en ligne, je ne peux pas sembler trouver de manière claire de le faire. P>

Le snip en ci-dessous est un monde Hello World: P>

%!PS
/Times               
20 selectfont         
20 800 moveto         
(Hello World!) show
showpage 


1 commentaires

Il n'y a pas de manière directe pour PostScript o Lisez ces formats - mais voir @LHF Réponse ci-dessous. Si vous souhaitez ajouter directement l'image, vérifiez ma réponse à Stackoverflow.com/Questtions/4924819/...


4 Réponses :


1
votes

Vous pouvez télécharger Référence sur la langue PostScript, troisième édition à partir d'Adobe (c'est le "Bible Bible" pour PostScript). Chapitre 4.10 images serait un bon point de départ.


0 commentaires

3
votes

Utilisez un programme comme Convertir puis supprimer tout code supplémentaire qu'il a généré.


2 commentaires

Le code généré par pnmtops peut être plus facile à comprendre. Voir NetPBM.SOURCEForge.net/doc/pnmtops.html


Pour les bitmaps droits, convertis en .xbm est assez pratique, mais Le Les bits dans chaque octet sont en arrière .



11
votes

Il existe une méthode simple et PostScript prend en charge le format JPEG. Si vous utilisez Ghostscript, vous devrez peut-être utiliser l'option -Dnosafer pour ouvrir des fichiers. Voici un exemple: xxx


3 commentaires

Pourquoi ne pas en faire une procédure prise (nom_fichier, x, y, wid, ht)? Cela pourrait également prendre un paramètre supplémentaire pour spécifier quel coin devrait être à (x, y). Si vous faites une composition rapide et sale, le coin supérieur gauche est plus simple de travailler avec.


Il pourrait être placé dans une procédure, mais la majeure partie du code ci-dessus consiste simplement à mettre des données dans la pile dans l'ordre approprié pour la commande ColorImage. Le coin inférieur gauche n'est pas vraiment un choix qu'il est défini par PostScript. PostScript définit 0,0 comme le bas à gauche de la page et les méthodes natives PostScript sont donc également centrées sur le fond, si vous attrapez mon gist. Vous pouvez choisir de définir X, Y comme en haut à gauche, mais votre fonction devrait convertir en coordonnées en bas à gauche pour vous.


Oui, je ne me plains pas ou rien. Mais envisagez le niveau du questionneur ... en fait je prends tout cela de retour! Faire ce serait un exercice parfait. Et vous avez donné tout ce qui est nécessaire!



0
votes

Est-ce une réponse tardive! Le problème avec -dnosafer code> m'a empêché d'utiliser les autres solutions, donc j'ai procédé aux éléments suivants:

Utilisez Python pour lire le fichier JPG en tant que binaire et en faire une chaîne, compatible avec / Ascihexdecode code>: p>

''. Joindre (["% 02x"% ORD (C) pour C en ouvert (nom de fichier "). Lire ()]) Code> p>

puis au lieu de lire et de décoder le fichier image à partir du fichier PostScript, collez la chaîne de calcul ci-dessus dans le fichier PostScript et Filtre CODE> IT, premier via / Ascihexdecode code> puis / dctdecode code>: p> xxx pré>

La touche ci-dessus remplace (myJpeg500x133.jpg) Fichier / filtre DCTDécode code> dans la réponse autrement très utile @ hath995. p>


Si vous voulez autre chose que JPEG mais toujours RVB (c.-à-d .: Vous voulez quelque chose pour lequel PostScript n'a pas de décodeur), et vous pouvez Utilisez Python pour préparer votre fichier PostScript, vous pouvez utiliser PIL, comme celui-ci (il ignore l'octet de transparence, qui est une opération ON / OFF dans PostScript): P>

import PIL.Image
i = PIL.Image.open("/tmp/from-template.png")
import itertools
''.join(["%02x" % g 
         for g in itertools.chain.from_iterable(
                    k[:3] for k in i.getdata())])


0 commentaires