Anuncios Google

Duda:Guardando imágenes en Luadev [Solucionado]

Pues bien me he dado cuenta que image.save() no funciona correctamente y lo uso bien.

Pasa con cualquier imagen.

Por ejemplo:

 

Y me la guarda así:

 

Alguna solución??

Salu2 & Gracias


Risa Dos años en SCENEBETA Risa

Click aquí para ver la Entrada de Bitácora.


Anuncios Google

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de jorge_97

by jorge_97

bueno he aqui un sample de lo que intento:

a=image.load("no.png")
a:blit(0,0)
screen.flip()
a=screen.toimage()
a:resize(10,10)
a:save("ms0:/c.png")

 

Me la guarda a un tamaño de 480x272 y yo necesito 10x10. Como lo hago??

Salu2


Risa Dos años en SCENEBETA Risa

Click aquí para ver la Entrada de Bitácora.

Para guardar una imagen

Para guardar una imagen modificada, lo que me ha funcionado es pasar sus pixeles (uno por uno) a otra imagen, y guardarla. Para eso, hice esta pequeña función:

function save(imagen,name)
  local tmp,x,y=image.create(imagen:width(),imagen:height(),0x00000000),1,1
    for i=1,imagen:width()*imagen:height() do
      tmp:pixel(x,y,imagen:pixel(x,y))
        x=x+1
      if x==imagen:width() then x=1 y=y+1 end
    end
      tmp:save(name)
end

Tarda 1 segundo en guardar una imagen de 120*120 pix (recomendable poner el CPU a full para que tarde menos con una más grande). Funciona bien para imágenes de tamaño igual, pero no funciona para imágenes redimensionadas (me las deja como si no hubieran sido redimensionadas. Prueba, quizá a ti si te vaya), pero eso también tiene solución (manual, por supuesto xD):

  • Cargar la imagen
  • Redimensionarla
  • Blitearla
  • Capturar la pantalla con screen.toimage()
  • Modificar la función de arriba, para que los límites del for correspondan con la posición de la imagen redimensionada y bliteada.
  • Usar la función, pasándole la pantalla capturada y los límites correspondientes.

Yo mismo haría todo eso, pero no les quiero quitar toda la diversión xDD

PD. Ya saben, cualquiera es libre de usar y modificar esa función, con la correspondiente mención ;)

Imagen de jorge_97

by jorge_97

jajajaja siempre ahí con tus "funciones caseras" xD.

Bueno muchisimas gracias lo acabo de probar "modificandolo" un poco y funciona de 10; claro el problema es que como bien dices las imágenes "Redimensionadas" o "Escaladas" conservan su w & h inicial además otro problema es que tarda demasiado :s

 

De todos modos aquí dejaré tu función "Modificada" como te he dicho por si le sirve a alguien más:

deporte=image.load("deporte.png")
 
function guardar_img(imagen,ruta)
--//By Rober Galarga PSP Scenebeta ;) \\--
	local img=image.create(imagen:width(),imagen:height(),0)
	local x=1
	local y=1
		for w=1,imagen:width() do
			for h=1,imagen:height() do
				img:pixel(w,h,imagen:pixel(w,h))
			end
		end
    img:save(ruta)
end
 
guardar_img(deporte,"ms0:/guardar.png")

 

Con esto doy por solucionada esta duda.

Rober te debo otra más ya van 3 ;)

Cuando pueda te lo agradeceré "Materialmente"

Salu2


Risa Dos años en SCENEBETA Risa

Click aquí para ver la Entrada de Bitácora.

Imagen de Dioni0396

y el image.resize?

y el image.resize?

Mira bien el algoritmo que te ha dado chimecho, es clave para tu avance.

Imagen de Chimecho

Yo no

El algoritmo se lo dio rober en un comentario más arribita.

Imagen de jorge_97

By Jorge_97

Os agradezco vuestra ayuda pero ya lo solucioné. Funciona bien ;)

Salu2

Imagen de Chimecho

Mmmm

Yo no veo esto en el código:

  • Cargar la imagen <-- esto sí
  • Redimensionarla
  • Blitearla
  • Capturar la pantalla con screen.toimage()
  • Modificar la función de arriba, para que los límites del for
    correspondan con la posición de la imagen redimensionada y bliteada.
  • Usar la función, pasándole la pantalla capturada y los límites correspondientes.

 



PSP FAT [5.00 M33-6] [6.60 ME] [Hard Moded] / Nintendo Wii [4.1U] [cIOS Hermes] [D2X cIOS] / iPhone 3G [4.2.1] [BB 05.13.04] [redsn0w] / iPod Touch 4 [6.1] [evasi0n]

07/05/10: Tuve el placer de llamarle con todo derecho "N00B" a molotovi xDDD

Recuerda: Sé el intérprete -_-

Imagen de Dioni0396

no uses

2 variables para lo mismo

usa b

Deja ver el trozo de code o brinda mas datos.

Que haces con esa funcion, estas capturando una imagen de tu pantalla y luego la guardas con esa funcion?, Si es asi como haces la captura?, con screen.toimage
() O screen.buffertoimage
(). 

 

Imagen de jorge_97

by jorge_97

imagen=image.load("imagen.png")

imagen:save("guardada.png")

 

Ese es el Code y no funciona.

He probado tambien con screen.toimage() y screen.buffertoimage() y nada

Salu2


Risa Dos años en SCENEBETA Risa

Click aquí para ver la Entrada de Bitácora.

No entiendo, para que cargar

No entiendo, para que cargar una imagen y luego guardarla. Yo he usado el image.save() pero luego de hacer una captura de pantalla. Depende que quieres capturar usas el toimage o buffertoimage. En ocaciones hago un screen.waitvblankstart(25) por que si no se ve fea la captura.

Ejemplo de lo que hago:

if controls.press('triangle') then 
   pic=screen.toimage() --captura de pantalla asignado a pic
   pic:save('ms0:/'..os.date('%I-%M')..'pic.png')
end
-- pic:save('ms0:/'..os.date('%I-%M')..'pic.png') es lo mismo que image.save(pic,'ms0:/'..os.date('%I-%M')..'pic.png'), lleva 2 argumentos objeto y ruta a guardar.

espero te sirva de ayuda si no pues me avisas y seguimos.

Sigo sin entender porque cargar una imagen y guardarla como has puesto en el code.

Imagen de jorge_97

By Jorge_97

Bueno intentaré explicarme lo mejor posible porque veo que ni con imágenes...

A ver cargamos una imagen y lo que yo quiero es guardarla. Por que? Pues bien porque modifico las caracteristicas de la imagen(Escala, Rotación, Color de los píxeles...). Ese punto está claro ahora, el problema, es que no sé como hacerlo.

Y logicamente no puedo usar screen.toimage() por dos grandes incovenientes:

1. Captura una imagen de 480*272. Y si la imagen es de 340*120 por ejemplo??

2. Imaginemos qe la imagen que yo quiero almacenar está superpuesta, es decir, encima de ésta hay más imágenes. Pues las capturaría también.

Pero bueno intentaré solucionarlo por mí mismo.

Se agredece el intento de ayudar ;) un saludo amigo


Risa Dos años en SCENEBETA Risa

Click aquí para ver la Entrada de Bitácora.

Imagen de Chimecho

Pues

Así logres guardarla, es imposible que se guarde el escalado, rotación, etcétera, que esas son modificaciones en las coordenadas del plano 3D con textura que la presenta, nada más.

Lo único sería el color de los píxeles, y si mal no recuerdo se guarda con imagen:save(ruta). Revisa el source del CSBAW&CSBUG, que guardo avatares y userbars y son imágenes al fin y al cabo.

 

Saludos!



PSP FAT [5.00 M33-6] [6.60 ME] [Hard Moded] / Nintendo Wii [4.1U] [cIOS Hermes] [D2X cIOS] / iPhone 3G [4.2.1] [BB 05.13.04] [redsn0w] / iPod Touch 4 [6.1] [evasi0n]

07/05/10: Tuve el placer de llamarle con todo derecho "N00B" a molotovi xDDD

Recuerda: Sé el intérprete -_-

Imagen de jorge_97

by jorge_97

ok, gracias ;)

Un saludo

Imagen de User170294

Pues...

Cita de _Boujack_: "En ocaciones hago un screen.waitvblankstart(25) por que si no se ve fea la captura."

EDITO: Perdona, quería responderte al comentario de abajo pero me confundí de comentario xD Salu2.


Imagen de jorge_97

By Jorge_97

Jajaja no pasa nada xD

Un saludo amigo

Imagen de jorge_97

by jorge_97

Alguien sabe algo??

Salu2

Imagen de Jepte

prueba screen.clear()  o

prueba screen.clear()  o screen.waitVblankStart()

Imagen de jorge_97

By Jorge_97

Gracias pero no creo que eso sirva

Salu2

Imagen de User170294

screen.waitVBlankStart()

screen.waitVBlankStart() podría ayudarte.

Imagen de jorge_97

by jorge_97

Para que??

 

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.