Comunidad Game Maker

Ayuda => Desarrollo de Scripts => Mensaje iniciado por: KayasamiX en Marzo 11, 2020, 04:08:35 pm

Título: pixelar cualcquier imagen/Mosaico como la compu del pokemon esmeralda :3
Publicado por: KayasamiX en Marzo 11, 2020, 04:08:35 pm
hola a todos a qui les traigo un scripts para pixelar imágenes usando surfaces.

solo se necesita un objeto donde en el evento de create agregamos esto:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

MXW= 64;             // maxima calidad/pixeles de la imagen
Spr=sprite15;       // aqui insertamos el sprite que queremos pixelar sprite15 en mi caso
MW= MXW;          // calidad gv
Surf_Mosaico= surface_create(MW, MW);        // creamos una surface para poder pixelar la imaen
texture_set_interpolation(0);                               // desactivamos la interpolacion de colores porque si no se vera borroso -_-

y en el evento de draw colocamos esto:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

if( MW=0 )begin MW=1; end;                     // esto evitara dividir por 0
if( MW>=MXW )begin MW=MXW; end;    // este es el limite de calidad/pixeles de la imgen

surface_resize(Surf_Mosaico ,MW, MW); // esco cambiara continuamente el tamaño de la surface con la variabes MW

/*
aqui pintamos el sprite en el lienzo pero, utilizando el codigo 'draw_sprite_stretched' para que se destruyan los pixeles haciendo que se vea pixelado dependiendo de la variable MW que es la calidad de imagen ( el valor se puede editar con los controles de edicion sencilla que le instale mas abajo para ver como se pixelea en tiempo real )
*/
surface_set_target(Surf_Mosaico);                    // editamos la surface 'Surf_Mosaico'
draw_clear_alpha(c_black, 0);                            // limpiamos la surface.
draw_sprite_stretched(Spr, 0, 0, 0, MW, MW);   // dibujamos el sprite en la surface
surface_reset_target();                                         // terminamos el proceso de dibujar el nuevo sprite

// proyectar resultados
draw_surface_stretched(Surf_Mosaico, x+128*2+5, y, 128*2, 128*2);    // esto muestra la imagen original
draw_sprite_stretched(Spr, 0, x, y, 128*2, 128*2);                                        // esto muestra el resultado

// aqui hay controles para ver el pixelado de la imagen
if( keyboard_check(vk_up)   && !keyboard_check(vk_control) )begin MW++ end;
if( keyboard_check(vk_down) && !keyboard_check(vk_control) )begin MW--; end;
if( keyboard_check_pressed(vk_up)   && keyboard_check(vk_control) )begin MW++ end;
if( keyboard_check_pressed(vk_down) && keyboard_check(vk_control) )begin MW--; end;

listo:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
en el pantallaso adjuntado se puede ver la imagen original de alta calidad de pixeles y al lado derecho, se ve el resultado de la version pixelada.
espero les guste :3