modifica risoluzione di immagine

Qui si parla di sprites, backgrounds, effetti speciali, programmi di disegno, ecc.
Avatar utente
jumoonp
GMI VIP
Messaggi: 3292
Iscritto il: 13/01/2008, 20:59
Contatta:

modifica risoluzione di immagine

Messaggio da jumoonp »

salve ragazzi....
volevo sapere come faccio a modificare la risoluzione di un immagine col GML, senza usare l'editor di sprite insomma, passare a 256 colori o 16 colori, oppure modificare l' rgb della foto
Spoiler
Gabriele Dell'Otto e Lee bermejo

Immagine

Jak
Admin
Messaggi: 12355
Iscritto il: 19/08/2009, 16:20
Specialità: Programmazione 3D
Uso: GM:Studio 2
Contatta:

Re: modifica risoluzione di immagine

Messaggio da Jak »

Disegni lo sprite su una surface e leggi/scrivi i pixel.
Un procedura tanto lenta che è impossibile da fare in gml. Per fare un blur fai prima a prendere la pensione che a vedere il risultato.
L'unica è andare di linguaggio più veloce e farsi un'array di pixel ed importare manualmente l'immagine quindi cercare qualche libreria per la lettura/scrittura di file immagine(se resti in windows dovresti avere delle funzionalità apposite) e modificarla tramite software.
Time to feel, time to believe
Dare to see what may come of our future
Lift your head, broaden your gaze
Speak your mind and your thoughts they will follow you

Avatar utente
jumoonp
GMI VIP
Messaggi: 3292
Iscritto il: 13/01/2008, 20:59
Contatta:

Re: modifica risoluzione di immagine

Messaggio da jumoonp »

Jak ha scritto:Disegni lo sprite su una surface e leggi/scrivi i pixel.
Un procedura tanto lenta che è impossibile da fare in gml. Per fare un blur fai prima a prendere la pensione che a vedere il risultato.
L'unica è andare di linguaggio più veloce e farsi un'array di pixel ed importare manualmente l'immagine quindi cercare qualche libreria per la lettura/scrittura di file immagine(se resti in windows dovresti avere delle funzionalità apposite) e modificarla tramite software.
Si, ma una volta letto il pixel, (parliamo di un solo pixel)
che procedimento si usa per modificarne il colore, col GML?
Spoiler
Gabriele Dell'Otto e Lee bermejo

Immagine

Avatar utente
Homunculus
Admin
Messaggi: 6840
Iscritto il: 25/11/2007, 20:36
Contatta:

Re: modifica risoluzione di immagine

Messaggio da Homunculus »

Io non ho ben capito cosa intendi con modificarne l'rgb.

Jak
Admin
Messaggi: 12355
Iscritto il: 19/08/2009, 16:20
Specialità: Programmazione 3D
Uso: GM:Studio 2
Contatta:

Re: modifica risoluzione di immagine

Messaggio da Jak »

Draw_pixel() ovviamente.
ed il colore lo imposti con make_color_rgb() :roll:
Time to feel, time to believe
Dare to see what may come of our future
Lift your head, broaden your gaze
Speak your mind and your thoughts they will follow you

Avatar utente
jumoonp
GMI VIP
Messaggi: 3292
Iscritto il: 13/01/2008, 20:59
Contatta:

Re: modifica risoluzione di immagine

Messaggio da jumoonp »

Homunculus ha scritto:Io non ho ben capito cosa intendi con modificarne l'rgb.

la tonalità del colore, per esempio elimini del tutto il verde, o il blu , o metti in risalto il rosso, e cosi via, senza usare "image_blend"
Spoiler
Gabriele Dell'Otto e Lee bermejo

Immagine

Avatar utente
jumoonp
GMI VIP
Messaggi: 3292
Iscritto il: 13/01/2008, 20:59
Contatta:

Re: modifica risoluzione di immagine

Messaggio da jumoonp »

Jak ha scritto:Draw_pixel() ovviamente.
ed il colore lo imposti con make_color_rgb() :roll:

si, vabbè, grazie tante, questo lo sapevo...

ma appunto, RGB come deve essere settato? non più a 256, giusto?
Spoiler
Gabriele Dell'Otto e Lee bermejo

Immagine

Avatar utente
Homunculus
Admin
Messaggi: 6840
Iscritto il: 25/11/2007, 20:36
Contatta:

Re: modifica risoluzione di immagine

Messaggio da Homunculus »

Con GM, fai prima a prenderti a martellate nelle balle che tentare operazioni pixel per pixel su immagini piu grandi di 64x64 :lol:

Avatar utente
Homunculus
Admin
Messaggi: 6840
Iscritto il: 25/11/2007, 20:36
Contatta:

Re: modifica risoluzione di immagine

Messaggio da Homunculus »

I 3 parametri della funzione vanno da 0 a 255

Avatar utente
jumoonp
GMI VIP
Messaggi: 3292
Iscritto il: 13/01/2008, 20:59
Contatta:

Re: modifica risoluzione di immagine

Messaggio da jumoonp »

Homunculus ha scritto:Con GM, fai prima a prenderti a martellate nelle balle che tentare operazioni pixel per pixel su immagini piu grandi di 64x64 :lol:

mi serve sapere solo di un pixel :spat:


dal gm6 in poi esiste un comando apposito per l'RGB..

col gm5 per esempio si faceva:
esempio:

Color=15897000
R=floor(Color mod 256);
G=floor((Color/256)mod 256);
B=floor(Color/65536);

forse dovrei settare il 256 a 128 e il 65536 con 16384, per avere un impoverimento dell'immagine?
Ultima modifica di jumoonp il 03/09/2012, 15:41, modificato 1 volta in totale.
Spoiler
Gabriele Dell'Otto e Lee bermejo

Immagine

Avatar utente
Tizzio
GMI Honor
Messaggi: 5836
Iscritto il: 29/06/2010, 23:43
Specialità: programmazione
Contatta:

Re: modifica risoluzione di immagine

Messaggio da Tizzio »

jumoonp ha scritto:
Homunculus ha scritto:Con GM, fai prima a prenderti a martellate nelle balle che tentare operazioni pixel per pixel su immagini piu grandi di 64x64 :lol:

mi serve sapere solo di un pixel :spat:


dal gm6 in poi esiste un comando apposito per l'RGB..

col gm5 per esempio si faceva:
esempio:

Color=15897000
R=floor(Color mod 256);
G=floor((Color/256)mod 256);
B=floor(Color/65536);

forse dovrei settare il 256 a 128 il 65536 con 16384, per avere un impoverimento dell'immagine?
color_get_red(color)
_green
_blue

Avatar utente
Homunculus
Admin
Messaggi: 6840
Iscritto il: 25/11/2007, 20:36
Contatta:

Re: modifica risoluzione di immagine

Messaggio da Homunculus »

Settare l'rgb di un'immagine non ha senso, un'immagine è un insieme di pixel che sono rappresebtati (ogni singolo pixel) da tre valori R G e B. con gm in base ai 3 valori puoi costruire un colore con make_color_rgb. se vuoi limitare il numero di colori che puoi generare devi per prima cosa scegliere i colori e arrotondare le cifre per ottenere sempre uno dei colori scelti. ma questo per pixel, non per immagine a livello globale.

Avatar utente
jumoonp
GMI VIP
Messaggi: 3292
Iscritto il: 13/01/2008, 20:59
Contatta:

Re: modifica risoluzione di immagine

Messaggio da jumoonp »

Tizzio ha scritto:
color_get_red(color)
_green
_blue
Si grazie, è arrivato il genio :lol: heilà tizzio come va?
Spoiler
Gabriele Dell'Otto e Lee bermejo

Immagine

Jak
Admin
Messaggi: 12355
Iscritto il: 19/08/2009, 16:20
Specialità: Programmazione 3D
Uso: GM:Studio 2
Contatta:

Re: modifica risoluzione di immagine

Messaggio da Jak »

jumoonp ha scritto:mi serve sapere solo di un pixel :spat:
Allora non parlare di ridimensionamento e modifica di immagini ;)
L'operazione che fai tu ovviamente non impoverisce l'immagine, riduce si il valore/colore massimo a metà ma devi agire separatamente sui canali e non sul totale.
Usa make_color_rgb e modifica i parametri della funzione, non fare da testa tua completamente da 0.
Se vuoi un'impoverimento puoi usare un sistema simile a quello per fare un movimento a griglia:
var2 = round(var / range) * range;
Se ad esempio range è 8 ed il colore 139 il colore risultante sarà 136 (idem per 132,133,134,135,136,137,138,139);
Time to feel, time to believe
Dare to see what may come of our future
Lift your head, broaden your gaze
Speak your mind and your thoughts they will follow you

Avatar utente
Tizzio
GMI Honor
Messaggi: 5836
Iscritto il: 29/06/2010, 23:43
Specialità: programmazione
Contatta:

Re: modifica risoluzione di immagine

Messaggio da Tizzio »

scusa ho capito male :P , pensavo che con
mi serve sapere solo di un pixel
dal gm6 in poi esiste un comando apposito per l'RGB..
intendessi che non ricordavi le funzioni per ricavare l'rgb

EDIT:preceduto, spiegato meglio da jak
Per fare quello che vuoi ottieni rgb tramite le 3 funzioni
Poi crei un algoritmo che ti divide i colori a "blocchi" in modo da arrotondare il colore al blocco più vicino.

Ma sicuramente esistono algoritmi prefatti e precisi per c++/java/javascript e qualsiasi linguaggio
Basta cercare un attimo su google e convertire in gml

Avatar utente
jumoonp
GMI VIP
Messaggi: 3292
Iscritto il: 13/01/2008, 20:59
Contatta:

Re: modifica risoluzione di immagine

Messaggio da jumoonp »

Jak ha scritto:Allora non parlare di ridimensionamento e modifica di immagini ;)
L'operazione che fai tu ovviamente non impoverisce l'immagine, riduce si il valore/colore massimo a metà ma devi agire separatamente sui canali e non sul totale.
Usa make_color_rgb e modifica i parametri della funzione, non fare da testa tua completamente da 0.
Se vuoi un'impoverimento puoi usare un sistema simile a quello per fare un movimento a griglia:
var2 = round(var / range) * range;
Se ad esempio range è 8 ed il colore 139 il colore risultante sarà 136 (idem per 132,133,134,135,136,137,138,139);
Se dei programmi come Paint o Pixia o Paint.net, fanno questo procedimento in un microsecondo e settano la foto a 256, 16 colori o in bianco e nero, volevo perlomeno sapere come fanno, capisco che il GML è lentissimo (come se già non lo sapessi), ma penso che ne sia capace , no?

dire poi, Jak, cose che non ho mai detto, cioè voler memorizzare pixel per pixel, faccio prima a prendere la pensione, è un insulto alla mia intelligenza, evidentemente sei abituato a sottovalutare le persone...
ne hai già dato ampiamente prova
Spoiler
Gabriele Dell'Otto e Lee bermejo

Immagine

Jak
Admin
Messaggi: 12355
Iscritto il: 19/08/2009, 16:20
Specialità: Programmazione 3D
Uso: GM:Studio 2
Contatta:

Re: modifica risoluzione di immagine

Messaggio da Jak »

jumoonp ha scritto:dire poi, Jak, cose che non ho mai detto, cioè voler memorizzare pixel per pixel, faccio prima a prendere la pensione, è un insulto alla mia intelligenza, evidentemente sei abituato a sottovalutare le persone...
-.- Parlavo di game maker.
jumoonp ha scritto:Se dei programmi come Paint o Pixia o Paint.net, fanno questo procedimento in un microsecondo e settano la foto a 256, 16 colori o in bianco e nero, volevo perlomeno sapere come fanno, capisco che il GML è lentissimo (come se già non lo sapessi), ma penso che ne sia capace , no?
Capace si ma appunto lentissimo. Io per un banalissimo calcolo per fare bianco e nero ci metteva tipo 5 minuti a fare un'immagine 256x256...
Questo perchè quei programmi immagazzinano l'immagine nella ram e non nella memoria video, la scheda video non la usano per niente a meno di programmi professionali come photoshop e gimp che la sfruttano per velocizzare i calcoli usando gli shader o GPGPU ma fanno fare "tutto" esclusivamente alla scheda video, niente passaggi inutili. Senza contare che lavorando direttamente con api di basso livello puoi fare un passaggio diretto tra le memorie molto veloce e non leggere ogni pixel uno alla volta come faresti con game maker.
In questo ambito game maker è circa qualche "milione" di volte più lento che fare qualcosa a basso livello.

Se vuoi un consiglio abbandona gm e vai di c++ con librerie tipo imagemagick.
Time to feel, time to believe
Dare to see what may come of our future
Lift your head, broaden your gaze
Speak your mind and your thoughts they will follow you

Avatar utente
Tizzio
GMI Honor
Messaggi: 5836
Iscritto il: 29/06/2010, 23:43
Specialità: programmazione
Contatta:

Re: modifica risoluzione di immagine

Messaggio da Tizzio »

ti faccio un esempio, dato che non so che conoscenze hai con le surfaces.

in create

Codice: Seleziona tutto

range=8;

sur=surface_create(64,64);
surface_set_target(sur);
draw_clear_alpha(c_black,0);
draw_sprite(sprite0,0,0);
for(i=0;i<surface_get_width(sur);i+=1){
  for(j=0;j<surface_get_height(sur);j+=1){
  col=surface_get_pixel(sur,i,j);
  r=floor(color_get_red(col)/range)*range;
  g=floor(color_get_green(col)/range)*range;
  b=floor(color_get_blue(col)/range)*range;
  draw_point_color(i,j,make_color_rgb(r,g,b));
  }
}
surface_reset_target();

poi in draw fai

Codice: Seleziona tutto

draw_surface(sur,0,0);
e in game end

Codice: Seleziona tutto

surface_free(sur);

Avatar utente
Homunculus
Admin
Messaggi: 6840
Iscritto il: 25/11/2007, 20:36
Contatta:

Re: modifica risoluzione di immagine

Messaggio da Homunculus »

jum non ti stiamo dicendo tutti che é troppo lento perché sei stupido o cose simili, é un limite di game maker. La funzione getpixel é PAUROSAMENTE lenta, tutto qua.

Parliamo invece di riduzione di colori. Limitare i colori di un'immagine si può fare in diversi modi, non c'é uno standard "riduci i colori a 16/256 ecc..." . Photoshop per esempio se si salva un gif con 16 colori, sceglie autonomamente QUALI colori sono predominanti nell'immagine e calcola qual'é la palette ristretta a 16 migliore da utilizzare. Un altro programma per esempio potrebbe utilizzare una palette standard con 16 colori che coprono quante più variazioni possibili, che é un po' quello che diceva jak prima parlando di scelta del range.

Tutto questo presuppone la capacità di estrapolare pixel per pixel i colori di un'immagine per poter applicare i calcoli necessari (e questi devi farli a mano in GM, ma prima ancora devi decidere COSA vuoi fare perché come descritto sopra non c'é un metodo univoco per ridurre i colori). In GM purtroppo l'operazione é troppo lenta per essere utilizzabile in immagini di dimensioni medie/grandi.

Avatar utente
Tizzio
GMI Honor
Messaggi: 5836
Iscritto il: 29/06/2010, 23:43
Specialità: programmazione
Contatta:

Re: modifica risoluzione di immagine

Messaggio da Tizzio »

ho appena trovato un articolo figo su wikipedia
http://en.wikipedia.org/wiki/Color_quantization


eccoti un gmk appena sfornato...
https://docs.google.com/open?id=0B8VuKo ... 0Q4aUJXQ1U

Rispondi

Chi c’è in linea

Visitano il forum: Nessuno e 50 ospiti