Il y avait une interface Python dans libsixel, alors utilisons-la.
réduction.
Vous pouvez convertir la chaîne d'octets en données Sixel, mais il semble que vous deviez utiliser l'API C pour ce faire, afin que vous puissiez facilement le réaliser en ignorant l'efficacité d'exécution.
from libsixel.encoder import Encoder as SixelEncoder
from libsixel import SIXEL_OPTFLAG_WIDTH, SIXEL_OPTFLAG_HEIGHT
from tempfile import NamedTemporaryFile
def sixeldraw(width=None,height=None):
with NamedTemporaryFile(prefix="sixel-") as fd:
pl.savefig(fd,format="png")
fd.flush()
encoder = SixelEncoder()
if width : encoder.setopt(SIXEL_OPTFLAG_WIDTH, width)
if height: encoder.setopt(SIXEL_OPTFLAG_HEIGHT,height)
encoder.encode(fd.name)
if __name__=="__main__":
import matplotlib
matplotlib.use("Agg")
import pylab as pl
import numpy as np
x = np.linspace(0,1)
y = x**2
pl.plot(x,y)
sixeldraw(640)
Oui. Créez un fichier temporairement et enregistrez l'image du graphique. Exportez le fichier image en sortie standard au format Sixel à l'aide de l'interface python de libsixel. Si vous utilisez un terminal prenant en charge Sixel, vous pouvez obtenir une image.
C'est une mise en œuvre découpée.
Recommended Posts