Módulo de pygame para la transferencia de imagen.
El módulo image
contiene funciones para leer y grabar imágenes, como
así también para transferir superficies a formatos accesibles para
otros paquetes.
Note que no hay una clase Image, una imagen se carga como un objeto
Surface
. La clase Surface
permite operaciones como dibujar
lineas, pintar pixeles, capturar regiones, etc.
El módulo image
es una dependencia importante de pygame, aunque el
soporte extendido a formatos es opcional. Por defecto solo puede cargar
imágenes BMP sin compresión; pero con pygame se provee un soporte de
imágenes completo, la función pygame.image.load()
puede interpretar los
siguientes formatos:
La funcionalidad de guardar imágenes solo soporta un conjunto reducido de formatos. Puede grabar en los siguientes formatos:
La grabación en formatos PNG y JPEG es una funcionalidad nueva de pygame 1.8.
Carga una nueva imagen desde un archivo.
pygame.image.load(filename): return Surface pygame.image.load(fileobj, namehint=""): return Surface
Carga una imagen desde un archivo. Puede utilizar tanto un nombre
de archivo como un objeto file
de python.
Pygame determinará de forma automática el tipo de archivo (por ejemplo,
gif o bmp) y generará un nuevo objeto Surface
con esa información. En algunos casos necesitará conocer la extensión del archivo (por ejemplo las
imagenes GIF deberían terminar en ”.gif”). Si utiliza un objeto archivo en
formato crudo, seguramente necesitará enviar el nombre original del archivo
como el argumento namehint
.
La superficie retornada contendrá el mismo formato de color, colores
clave o transparencia alpha que el fichero del que proviene. Generalmente
querrá llamar a Surface.convert()
sin argumentos para crear una
copia que se pueda imprimir mas rápido en pantalla.
Para imágenes con transparencia alpha, como en las imágenes .png, use
el método convert_alpha()
luego de cargar la imágen, así la
superficie resultante también tendrá transparencia.
Pygame no siempre tendrá soporte para todos los formatos. Como mínimo
soportará el formato BMP sin compresión. Si pygame.image.get_extended()
retorna True
, usted podría ser capaz de cargar la mayoría
de las imágenes, incluyendo png, jpg y gif.
Debería usar os.path.join()
para otorgar mas compatibilidad.
surface = pygame.image.load(os.path.join('data', 'bla.png'))
Guarda una imagen en el disco.
pygame.image.save(Surface, filename): return None
Guardará la superficie como una imagen BMP, TGA, PNG o JPEG. Si la extensión del nombre de archivo no se reconoce, se utilizará por defecto .TGA. Tanto los formatos TGA como BMP generan archivos sin compresión.
Guardar archivos PNG y JPEG es una funcionalidad nueva de pygame 1.8.
Consulta si los formatos de imagen extendidos se pueden cargar.
pygame.image.get_extended(): return bool
Si pygame fue construida con los formatos de imagen extendido esta
función retornará True
. Aún así no es posible determinar que formatos
estarán disponibles, pero generalmente podrá leerlos todos.
Transfiere una imagen a una cadena de texto string.
pygame.image.tostring(Surface, format, flipped=False): return string
Genera una cadena que pude transferirse con el método fromstring
en
otros paquetes de imágenes de python. Algunos paquetes de imagen
de python prefieren sus imágenes en el formato “de abajo hacia
arriba”, por ejemplo el paquete PyOpenGL). Se invertirá verticalmente
la cadena retorno si envía True
como valor para el argumento
flipped
.
El argumento format
es una cadena con uno de los siguiente valores. Note
que solo las superficies de 8 bits pueden usar el formato “P”. Los
otros formatos funcionarán con cualquier superficie. Ademas note que
otros paquetes de imágenes de python suportan mas formatos que pygame.
Cadena format | Superficie |
---|---|
P | superficies de 8 bits con paleta. |
RGB | imagen de 24 bits. |
RGBX | imagen de 32 bits con un espacio sin utilizar. |
RGBA | imagen de 32 bits con un canal alpha (transparencia). |
ARGB | imagen de 32 bits con canal alpha en primer lugar. |
RGBA_PREMULT | imagen de 32 bits bajo la escala del canal alpha. |
ARGB_PREMULT | imagen de 32 bits bajo la escala del canal alpha en primer lugar. |
Genera una nueva superficie desde una cadena.
pygame.image.fromstring(string, size, format, flipped=False): return Surface
Esta función toma argumentos similares a pygame.image.tostring().
El argumento size
es una tupla con números que representan el ancho
y alto. Puede destruir la cadena original una vez que la nueva superficie
se ha creado.
El formato y tamaño de la imagen debe coincidir exactamente con el mismo tamaño de la cadena. Se lanzará una excepción en otro caso.
Consulte el método pygame.image.frombuffer() para ver una forma posiblemente mas rápida de transferir imágenes en pygame.
Genera una nueva superficie que comparte los datos dentro de una cadena.
pygame.image.frombuffer(string, size, format): return Surface
Genera una nueva superficie que comparte los datos de los pixeles directamente desde la cadena. Esta función toma los mismos argumentos que pygame.image.fromstring(), pero no puede invertir verticalmente los datos de origen.
Funcionará mucho mas rápido que pygame.image.fromstring dado que no se alojan o copian datos de pixeles.