modifica risoluzione di immagine
modifica risoluzione di immagine
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
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
-
- Admin
- Messaggi: 12355
- Iscritto il: 19/08/2009, 16:20
- Specialità: Programmazione 3D
- Uso: GM:Studio 2
- Contatta:
Re: modifica risoluzione di immagine
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.
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
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
Re: modifica risoluzione di immagine
Si, ma una volta letto il pixel, (parliamo di un solo pixel)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.
che procedimento si usa per modificarne il colore, col GML?
Spoiler
- Homunculus
- Admin
- Messaggi: 6840
- Iscritto il: 25/11/2007, 20:36
- Contatta:
Re: modifica risoluzione di immagine
Io non ho ben capito cosa intendi con modificarne l'rgb.
-
- Admin
- Messaggi: 12355
- Iscritto il: 19/08/2009, 16:20
- Specialità: Programmazione 3D
- Uso: GM:Studio 2
- Contatta:
Re: modifica risoluzione di immagine
Draw_pixel() ovviamente.
ed il colore lo imposti con make_color_rgb()
ed il colore lo imposti con make_color_rgb()
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
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
Re: modifica risoluzione di immagine
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
Re: modifica risoluzione di immagine
Jak ha scritto:Draw_pixel() ovviamente.
ed il colore lo imposti con make_color_rgb()
si, vabbè, grazie tante, questo lo sapevo...
ma appunto, RGB come deve essere settato? non più a 256, giusto?
Spoiler
- Homunculus
- Admin
- Messaggi: 6840
- Iscritto il: 25/11/2007, 20:36
- Contatta:
Re: modifica risoluzione di immagine
Con GM, fai prima a prenderti a martellate nelle balle che tentare operazioni pixel per pixel su immagini piu grandi di 64x64
- Homunculus
- Admin
- Messaggi: 6840
- Iscritto il: 25/11/2007, 20:36
- Contatta:
Re: modifica risoluzione di immagine
I 3 parametri della funzione vanno da 0 a 255
Re: modifica risoluzione di immagine
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
mi serve sapere solo di un pixel
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
Re: modifica risoluzione di immagine
color_get_red(color)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
mi serve sapere solo di un pixel
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?
_green
_blue
- Homunculus
- Admin
- Messaggi: 6840
- Iscritto il: 25/11/2007, 20:36
- Contatta:
Re: modifica risoluzione di immagine
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.
Re: modifica risoluzione di immagine
Si grazie, è arrivato il genio heilà tizzio come va?Tizzio ha scritto:
color_get_red(color)
_green
_blue
Spoiler
-
- Admin
- Messaggi: 12355
- Iscritto il: 19/08/2009, 16:20
- Specialità: Programmazione 3D
- Uso: GM:Studio 2
- Contatta:
Re: modifica risoluzione di immagine
Allora non parlare di ridimensionamento e modifica di immaginijumoonp ha scritto:mi serve sapere solo di un pixel
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
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
Re: modifica risoluzione di immagine
scusa ho capito male , pensavo che con
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
intendessi che non ricordavi le funzioni per ricavare l'rgbmi serve sapere solo di un pixel
dal gm6 in poi esiste un comando apposito per 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
Re: modifica risoluzione di immagine
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?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);
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
-
- Admin
- Messaggi: 12355
- Iscritto il: 19/08/2009, 16:20
- Specialità: Programmazione 3D
- Uso: GM:Studio 2
- Contatta:
Re: modifica risoluzione di immagine
-.- Parlavo di game maker.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...
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...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?
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
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
Re: modifica risoluzione di immagine
ti faccio un esempio, dato che non so che conoscenze hai con le surfaces.
in create
poi in draw fai
e in game end
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);
Codice: Seleziona tutto
surface_free(sur);
- Homunculus
- Admin
- Messaggi: 6840
- Iscritto il: 25/11/2007, 20:36
- Contatta:
Re: modifica risoluzione di immagine
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.
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.
Re: modifica risoluzione di immagine
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
http://en.wikipedia.org/wiki/Color_quantization
eccoti un gmk appena sfornato...
https://docs.google.com/open?id=0B8VuKo ... 0Q4aUJXQ1U
Chi c’è in linea
Visitano il forum: Nessuno e 50 ospiti