[Python] ¿Cómo puedo empaquetar una imágen dentro de un programa ejecutable?

Iniciado por Príncipe_Azul, 8 Marzo 2014, 05:42 AM

0 Miembros y 1 Visitante están viendo este tema.

Príncipe_Azul

Hola a todos, tengo una duda, quisiera saber, ¿como puedo empaquetar una o varias imágenes dentro de un ejecutable creado con py2exe?
Es decir, tengo un programa y quisiera pasarlo a ejecutable, hasta ahí todo bien, pero el tema es que yo no quiero que las imágenes, que bueno en este caso es una sola, vaya en una carpeta junto con el exe, ni tampoco dentro de library.zip (a menos que esta compilada o algo así)
Osea pueden ir ciertas imágenes que utiliza el programa junto con el .exe, pero no todas, ya que pueden reemplazarlas y eso es lo que no deseo.
Por ejemplo un logo del programa o una foto del autor, esas son cosas que no deberían estar junto con el .exe (en la misma carpeta), sino dentro de él así no puedan modificarlas/reemplazarlas, eso es lo quiero saber si eso es posible.
Me imagino y por lo que andube leyendo esto pueda conseguirse con una opción de py2exe, he probado esta opción que he encontrado en " http://www.py2exe.org/index.cgi/data_files ":

Código (python) [Seleccionar]
from distutils.core import setup
import py2exe

Mydata_files = [('images', ['C:\Users\Daniel\Desktop\\favicon.ico'])]

setup(
   console=['Probando.py'],
   data_files = Mydata_files,
   options={
               "py2exe":{
                       "unbuffered": True,
                       "optimize": 2,
                       "excludes": ["email"]
               }
       }
)


Pero no me ha servido, no funciona, porque cuando abro el programa si se ve el favicon (estando todavía la imagen), pero si yo lo borro al favicon luego de ser pasado a ejecutable, me aparece una ventana de error diciendo que el archivo "favicon.ico" no se encuentra en X directorio.
Y supuestamente lo mete ahí dentro para que no lo puedan modificar, pero al borrarlo, cuando abro de nuevo el programa me salta esa ventana, osea que todavía sigue dependiendo de que el archivo favicon.ico esté en X ruta para que sea visible y cargado en el programa.
Ahora mi otra duda es, (en el caso que esto si sea posible osea meter una imagen dentro del .exe o de alguna manera que la imagen no pueda ser modificada) ¿como haría en el código fuente de Python para indicarle al mismo donde estaría la imagen? ya que si la imagen estaría dentro del .exe no la podría encontrar, ahí no sé como hacerlo, por ejemplo en esta parte del código cuando establezco el favicon:

Código (python) [Seleccionar]
       icono = "C:\Users\Daniel\Desktop\\favicon.ico"
       favicon = wx.Icon(icono, wx.BITMAP_TYPE_ICO)
       wx.Frame.SetIcon(self,favicon)


Bueno ahí en la variable "icono" que debería poner? en el caso que la imagen esté dentro del .exe?
He visto programas en C ya compilados y llenos de símbolos, que hay directorios y ahí dentro están las imagenes, pero esos directorios y esas imágenes no existen en mi pc, sino que están dentro del mismo programa.
Bueno amigos espero que me ayuden por favor, les agradecería de corazón, igual desde ahora les agradezco. Muchas gracias!!
Que tengan buen día!
Foro de Ayuda de Programación General, IRC y mIRC Scripting: 

Príncipe_Azul

Hola nuevamente!!
He probado el método de la librería AutoPy y me funcionó perfectamente!!, osea por más que sólo tenga que especificar en una variable tipo string muchos caracteres, pero me sirve ya que así puedo hacer que el programa compare si se ha modificado la imagen, hice varias pruebas y todo resultó con éxito, así que contento!!!
La página de autopy es esta: http://www.autopy.org/
Y aca hay un tutorial en español: http://recursospython.com/guias-y-manuales/autopy-toolkit/
Muchas gracias igual, que Dios los bendiga compañeros.
Hasta pronto y que tengan buenas noches!!
Foro de Ayuda de Programación General, IRC y mIRC Scripting: