Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image 是否有一种方法可以直接从字节创建光栅图像以用于画布(不显示)显示?_Image_Python Imaging Library_Raster - Fatal编程技术网

Image 是否有一种方法可以直接从字节创建光栅图像以用于画布(不显示)显示?

Image 是否有一种方法可以直接从字节创建光栅图像以用于画布(不显示)显示?,image,python-imaging-library,raster,Image,Python Imaging Library,Raster,我正在“RGBX”fomat(从内存映射设备)中以字节字符串创建512x512光栅图像,无法在标签图像中显示。使用show()时,图像显示良好。我只需要快速地将字节数据直接传输到按钮或标签的图像输入,这可能吗 我已尝试使用.convert转换图像,不使用RGB,PhotoImage只需要字符串变量,base64.b64encode()会在我的机器上生成一个无法修复的僵尸。我曾在演示中尝试使图像对象“静态”,我认为大多数类似问题的答案都指向使图像保持在周围以显示。通过打开任何文件加载的图像都可以使

我正在“RGBX”fomat(从内存映射设备)中以字节字符串创建512x512光栅图像,无法在标签图像中显示。使用show()时,图像显示良好。我只需要快速地将字节数据直接传输到按钮或标签的图像输入,这可能吗

我已尝试使用.convert转换图像,不使用RGB,PhotoImage只需要字符串变量,base64.b64encode()会在我的机器上生成一个无法修复的僵尸。我曾在演示中尝试使图像对象“静态”,我认为大多数类似问题的答案都指向使图像保持在周围以显示。通过打开任何文件加载的图像都可以使用标签或按钮图像方法显示。io.BytesIO不支持将图像插入其中

import tkinter as tk
from PIL import Image
#import base64

root=tk.Tk()

kimage_width = 512
kimage_height = 512
kimgSize = (kimage_width,kimage_height)

# Make a color 256K pixel photo of 'stuff', in bytes
# The image data is in RGBX order

ColorImage=b''

for i in range (0,int(kimage_width * kimage_height/8)):
    ColorImage+=bytes([(i>>2) & 0xFF]) # Red
    ColorImage+=bytes([(i>>7) & 0xFF]) # Green
    ColorImage+=bytes([(i>>6) & 0xFF]) # Blue
    ColorImage+=bytes([(i>>0) & 0xFF]) # Not used

# copy it 8 times

ColorImage+=ColorImage+ColorImage+ColorImage # 4
ColorImage+=ColorImage # total = 8 copies

# make a PIL image?

kimage = Image.frombytes('RGBX', kimgSize, ColorImage, 'raw')

kimage.show() # Display image if not a tkinter window

#######photo = base64.b64encode(ColorImage) # Crash - makes a zombie

b=tk.Button(root,justify = tk.LEFT)
b.config(image=kimage, width="512", height="512")
b.pack(side=tk.LEFT)
root.mainloop()
ImageMajick在1个窗口中显示512x512彩色图像,tk窗口应将相同的图像放置在按钮图像中,但tk错误与:
_tkinter.TclError:图像“”不存在

我认为您正在尝试执行此操作,但遗漏了一些位:

#!/usr/bin/env python3

import tkinter as tk
from PIL import Image, ImageTk

root=tk.Tk()

kimage_width = 512
kimage_height = 512
kimgSize = (kimage_width,kimage_height)

# Make a color 256K pixel photo of 'stuff', in bytes
# The image data is in RGBX order

ColorImage=b''

for i in range (0,int(kimage_width * kimage_height/8)):
    ColorImage+=bytes([(i>>2) & 0xFF]) # Red
    ColorImage+=bytes([(i>>7) & 0xFF]) # Green
    ColorImage+=bytes([(i>>6) & 0xFF]) # Blue
    ColorImage+=bytes([(i>>0) & 0xFF]) # Not used

# copy it 8 times

ColorImage+=ColorImage+ColorImage+ColorImage # 4
ColorImage+=ColorImage # total = 8 copies

# make a PIL image?

kimage = Image.frombytes('RGBX', kimgSize, ColorImage, 'raw').convert('RGB')

kimage.show() # Display image if not a tkinter window

pI = ImageTk.PhotoImage(kimage)
b=tk.Button(root,justify = tk.LEFT)
b.config(image=pI, width=512, height=512)
b.pack(side=tk.LEFT)
root.mainloop()

我认为您正在尝试这样做,但遗漏了几点:

#!/usr/bin/env python3

import tkinter as tk
from PIL import Image, ImageTk

root=tk.Tk()

kimage_width = 512
kimage_height = 512
kimgSize = (kimage_width,kimage_height)

# Make a color 256K pixel photo of 'stuff', in bytes
# The image data is in RGBX order

ColorImage=b''

for i in range (0,int(kimage_width * kimage_height/8)):
    ColorImage+=bytes([(i>>2) & 0xFF]) # Red
    ColorImage+=bytes([(i>>7) & 0xFF]) # Green
    ColorImage+=bytes([(i>>6) & 0xFF]) # Blue
    ColorImage+=bytes([(i>>0) & 0xFF]) # Not used

# copy it 8 times

ColorImage+=ColorImage+ColorImage+ColorImage # 4
ColorImage+=ColorImage # total = 8 copies

# make a PIL image?

kimage = Image.frombytes('RGBX', kimgSize, ColorImage, 'raw').convert('RGB')

kimage.show() # Display image if not a tkinter window

pI = ImageTk.PhotoImage(kimage)
b=tk.Button(root,justify = tk.LEFT)
b.config(image=pI, width=512, height=512)
b.pack(side=tk.LEFT)
root.mainloop()