Anuncios Google

Dimensiones de un png sin cargarlo

Esta vez les traigo un pequeño pero muy útil snippet.

Alguna vez trataste de saber el tamaño de una imagen png o gif sin cargarlo con image.load() en lua?

Pues, eso es lo que he hecho, aquí el code:

function check_image_size(ruta)
local temp=io.open(ruta,"r")
local ext=temp:read(4)
 
if string.upper(ext)=="‰PNG" then
	local tmp=temp:read(12)
	local w_car=temp:read(4)
	local h_car=temp:read(4)
	local w_hexa="0x"
	local h_hexa="0x"
	for i=1,4 do
		w_hexa=w_hexa..string.format("%0x",string.byte(string.sub(w_car,i,i)))
		h_hexa=h_hexa..string.format("%0x",string.byte(string.sub(h_car,i,i)))
	end
	w=tonumber(string.format("%d",tonumber(w_hexa)))
	h=tonumber(string.format("%d",tonumber(h_hexa)))
elseif string.upper(string.sub(ext,1,3))=="GIF" then
	local tmp=temp:read(2)
	local w_car=temp:read(2)
	local h_car=temp:read(2)
	local w_hexa="0x"
	local h_hexa="0x"
	for i=2,1,-1 do
		w_hexa=w_hexa..string.format("%0x",string.byte(string.sub(w_car,i,i)))
		h_hexa=h_hexa..string.format("%0x",string.byte(string.sub(h_car,i,i)))
	end
	w=tonumber(string.format("%d",tonumber(w_hexa)))
	h=tonumber(string.format("%d",tonumber(h_hexa)))
end
 
temp:close()
return w,h
end

uso:

width,height=check_image_size(ruta_del_png_o_gif)

Luego es cuestión de usar las variables width y height para lo que las vayan a usar.

Cabe recalcar, que sólo hay que usarlo una vez, porque no queremos que esté una y otra vez leyendo de la ms, ahi ya depende del ingenio del programador como hacer eso... xD

 

Ahora, para que me sirve esto?

Sabías que si cargas una imagen que exceda las dimensiones 512x512 en lua la psp se congela?, sino, ya lo sabes xD

Con ese propósito lo he creado, para decidir si la cargo o no

Saludos! y espero que a más de uno le sirva ^^

 



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 -_-


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 trom_us

muy bien. aun que

cabe aclarar, o al menos yo no me he dado cuenta...que al menos el luaplayerhm7 no lee gif, asi pues es redundante, sin embargo en la compilacion de luadev, tengo entendido que compilo el codigo que al parecer lee el gif... y muy aparte, en el caso de luaplayerhm7, la lib del png tiene un fallo con la lectura de png interleaced, dando crash al leerlas en un 99% de mis pruebas, entonces para dicho luaplayer, la pocicion 31 da 1=interleaced, 0=no interleaced, seria bueno como en mi caso de mis librerias, evitar abrir dichas imagenes pues ya saben, es 99% probable que no lo haga., aun asi insisto, en el caso de luadev, hable ese tema con DeviAnTe, y la lib que el compilo, no tiene ese problema, pero si hablamos de lua's , mis extenciones a luaplayerhm7 para aquellos que usan Guinxell, son...

  img.load(), img.info(), img.id(), img.palette(), img.stretch(),img.stretch2d(),img.getPBP()

obteniendo asi datos de imagenes, ico,cur,ani,bmp,gif,pcx,jpg,png...(cur,ani y gif, se puede obtener todas la imagenes), sin embargo hay funciones que las utilizan como tal, ejemplo el navegador, y el puntero. ejemplo: puntero.img("ball.ani")

entonces  los datos son por ejemplo la obtencion de la imagen(img.load), obtenciaon previa de su informacion(img.info), la obtencion del reconocimiento de si es X imagen(img.id), la obtencion de su paleta de colores 2-256 (img.palette), la obtencion de la imagen reescalada ya sea mayor o menor a la original(img.strech), presentacion visual de la imagen reescalada a screen(img.stretch2d), y por ultimo la obtencion de las imagenes en un archivo Eboot, o ISO(img.getPBP)...digo, por decir algo es asi como se manejaria en la extencion que he estado programando de luaplayerhm7, llamada Guinxell...

saludos.

 

Imagen de Robione22

Perfecto.

Muchas gracias, estoy seguro que será de utilidad a más de uno.

Pero llamar a la función "read_size" creo que se queda corto a lo que hace, no sé podrías llamarlo "comprobar_tamano_imagen" o "check_image_size", sé que no es muy relevante esto pero así se pueden evitar confusiones.

Salu2

Imagen de moikop

Interesante...

Gracias por compartirlo Chimecho!
Seguramente a muchos le será muy útil.

Un saludo ;-)

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.