In libsixel gab es eine Python-Oberfläche. Verwenden wir sie also.
Kürzung.
Sie können die Byte-Zeichenfolge in Sixel-Daten konvertieren, aber es scheint, dass Sie dazu die C-API verwenden müssen, damit Sie sie leicht realisieren können, indem Sie die Laufzeiteffizienz verwerfen.
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)
Ja. Erstellen Sie vorübergehend eine Datei und speichern Sie das Diagramm. Geben Sie die Bilddatei über die Python-Oberfläche von libsixel als Standardausgabe im Sixel-Format aus. Wenn Sie ein Terminal verwenden, das Sixel unterstützt, können Sie ein Bild erhalten.
Es ist eine ausgeschnittene Implementierung.
Recommended Posts