尝试用Python(和PIL)打印

2024-06-16 16:06:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用Python脚本将图像发送到打印机进行打印。我对这门语言没有太多的经验,并且从其他一些人那里得到了一些提示,而且我目前遇到了一个问题,就是我一直收到一个错误,说PIL中的一个文件丢失了。我的代码是:

from PIL import Image
from PIL.ExifTags import TAGS
import socket
import sys
from threading import Thread

def print_bcard(HOST):
    print 'Printing business card'
    card_pic = Image.open("/home/nao/recordings/cameras/bcard.jpg")
    HOST = '192.168.0.38'
    PORT = 9100  
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.connect((HOST, PORT))
    f = open(str(card_pic), 'rb')  #open in binary
    l = f.read(1024)
    while (l):
        s.send(l)
        l = f.read(1024)
    f.close()

    s.close()

print_bcard('192.168.0.38')

我一直得到的错误是:

^{pr2}$

有没有人知道发生了什么,或者如果不知道,不用PIL访问照片的另一种方式?谢谢。在


Tags: fromimageimporthostclosereadpilport
2条回答

我想问题是你用PIL打开图片:
card_pic = Image.open("/home/nao/recordings/cameras/bcard.jpg")
而不是在这里打开文件:
f = open(str(card_pic), 'rb') #open in binary
但是str(card_pic)试图将PIL-image对象转换为字符串,它没有返回文件名。 改为试试这一行:
f = open("/home/nao/recordings/cameras/bcard.jpg", 'rb')

如果你想读一个文件名的话。相反,您将它加载到一个PIL Image中,然后将图像传递给file open()函数,这没有任何意义。在

尝试:

with open("/home/nao/recordings/cameras/bcard.jpg", 'rb') as f:
    l = f.read(1024)
    while (l):
        s.send(l)
        l = f.read(1024)

相关问题 更多 >