J'ai une image en mémoire un format (sortie de pyplot) et je souhaite le montrer directement sur l'Android à travers Kivy, mais je ne veux pas créer de fichier image. Y a-t-il un moyen de faire ça? Sur Pyplot, je suis capable de générer le fichier comme objet en l'écrivant de l'objet, mais je ne sais pas comment le mettre en kivy. P>
3 Réponses :
Vous pouvez enregistrer le fichier dans un tampon avec StringIO (voir ceci: tampon binaire à Python A >). quelque chose comme: p>
Comment puis-je obtenir l'objet image pour avoir la photo?
Semblable à la première réponse mais ne nécessite pas IMG_PYGAME:
from kivy.core.image import Image as CoreImage from kivy.uix.image import Image import io import qrcode # specific to my usecase, interchangeable with Pil.Image # OR from PIL import Image as PilImage msg = "text" image = Image(source="") imgIO = io.BytesIO() qr = qrcode.make(msg) # returns PilImage object qr.save(imgIO, ext='png') # equivalent to Pil.Image.save() imgIO.seek(0) imgData = io.BytesIO(imgIO.read()) image.texture = CoreImage(imgData, ext='png').texture image.reload()
Mais que si je veux jouer une vidéo au lieu d'une image?
Si vous souhaitez afficher une image binaire directement dans Kivy, vous pouvez simplement travailler avec le module IO (Import IO) et le module d'image Kivy (kivy.uix.image)
Vérifiez ce code: P>
from kivy.uix.image import Image, CoreImage import io f=open("img.jpg",'rb') binary_data= f.read() #image opened in binary mode data = io.BytesIO(binary_data) img=CoreImage(data, ext="png").texture new_img= Image() new_img.texture= img
Mais que si je veux jouer une vidéo au lieu d'une image?