Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: maxiz-22 en Diciembre 22, 2010, 07:35:18 AM

Título: Transformar sprite en binario y viceversa(solucionado)
Publicado por: maxiz-22 en Diciembre 22, 2010, 07:35:18 AM
como hago para transformar un sprite que tengo en gm en binario
para guardarlo en una variable?
o sea necesito el archivo de imagen en binario para que se pueda subir a una base de datos
salu2 gracias
Título: Re: Transformar sprite en binario y viceversa
Publicado por: Texic en Diciembre 22, 2010, 08:26:12 AM
Me confunde el t?rmino binario, te refieres a en bytes o en binario de 1 y 0
EDITO: Bueno, hice un ejemplo q abarca ambos campos, le puse separadores a los numeros binarios para saber donde empieza uno y termina el otro (podria haber agregado ceros a la izq, pero me parecio m?s pr?ctico as?)
Título: Re: Transformar sprite en binario y viceversa
Publicado por: Wadk en Diciembre 22, 2010, 08:55:44 AM
?En binario...? No creo que sea eso lo que necesit?s...
A ver, supongo que con "base de datos" te refer?s a una BD MySQL o similar...

Te dejo este script, devuelve un string que supongo que pod?s guardar en la base de datos que uses:
[gml]// spr2str(sprite);
var spr, path, str, file;

spr = argument0;
path = temp_directory + "\img" + irandom(999);
str = "";

sprite_save_strip(spr, path);

file = file_bin_open(path, 0);
while (file_bin_position(file) < file_bin_size(file)){
    str += chr(file_bin_read_byte(file));
}
file_bin_close(file);
file_delete(path);

str += chr(sprite_get_number(spr));
str += chr(sprite_get_smooth(spr));
str += chr(sprite_get_xoffset(spr));
str += chr(sprite_get_yoffset(spr));

return str;[/gml]

Y para cargar un sprite, cuando ya tengas el string en una variable (devuelve el id del sprite para que lo puedas usar):
[gml]// str2spr(string);
var path, str, file, i, attr, spr;

path = temp_directory + "\img" + irandom(999);
str = argument0;

file = file_bin_open(path, 1);
for (i = 0; i < string_length(str) - 4; i+=1){
    file_bin_write_byte(file, ord(string_char_at(str, i)));
}
file_bin_close(file);

for (i = string_length(str) - 4; i < string_length(str); i += 1){
    attr = ord(string_char_at(str, i));
}

spr = sprite_add(path, attr[0], false, attr[1], attr[2], attr[3]);

file_delete(path);

return spr;[/gml]

Por cierto, si el sprite en cuesti?n tiene m?s de 255 subim?genes o un xoffset o yoffset mayor a 255, fallar?n los scripts. No s? cual podr?a ser el resultado.
Título: Re: Transformar sprite en binario y viceversa
Publicado por: Texic en Diciembre 22, 2010, 09:13:03 AM
Me ganaste de mano XD
Y el m?o no abarca subimagenes automaticamente, aunq es facil de agregar
Título: Re: Transformar sprite en binario y viceversa
Publicado por: maxiz-22 en Diciembre 23, 2010, 05:09:25 AM
Muchisimas graciass a los 2 me salvaron las papas xD
jajaj
ahora me voy a poner a implementarloss al juego =D
salu2 y gracias