Annonce

>>> Bienvenue sur codelab! >>> Première visite ? >>> quelques mots sur codelab //// une carte des membres//// (apéros) codelab


#1 2012-12-29 18:30:33 img.copy() assombrit la copie à chaque passe

Olivier
N°4
Lieu: Chalon sur la Saône
Date d'inscription: 2009-04-07
Messages: 1471
Site web

img.copy() assombrit la copie à chaque passe



Bonsjours...

J'ai un comportement étrange sur la fonction copy() avec le sketch ci-dessous qui ne fait (enfin, devrait) que copier le contenu d'une image dans elle-même...
(Je passe par un createImage, car le but final, c'est bien d'introduire une modification. Mais voulue... tongue )
Le résultat que j'attends, c'est qu'il ne se passe rien.
Or, à chaque clic, l'image s'assombrit, jusqu'à finir par devenir complètement noir si on clique suffisamment longtemps...

J'ai essayé avec un P5 1.5 et 2.0 (sous Ubuntu). Le résultat est le même.

Est-ce qu'il y a quelque chose qui m'échappe ?

Merci... smile

Code (P5) :

PImage tissu;

void setup() {
  tissu = loadImage("tissu.png");
  size (tissu.width, tissu.height);
}

void draw() {
  image(tissu, 0, 0, tissu.width, tissu.height);
}


void mousePressed () {

  PImage newTissu = createImage(tissu.width, tissu.height, RGB);
  newTissu.copy (tissu, 0, 0, tissu.width, tissu.height, 0, 0, tissu.width, tissu.height);
  newTissu.save("data/tissu.png");
  tissu = loadImage("tissu.png");
  
}

Dernière modification par Olivier (2013-01-12 13:58:17)


L'Amour au Peuple !

Hors ligne

 

#2 2012-12-29 19:11:16 Re : img.copy() assombrit la copie à chaque passe

chrisjo
membre
Date d'inscription: 2012-12-26
Messages: 22

Re: img.copy() assombrit la copie à chaque passe



Bonjour,
j'ai aussi eu des résultats bizarres avec cette fonction 'copy', assombrissement et décalage. Je n'ai plus l'exemple mais je crois que le problème était lié aux dimensions de l'image par rapport à l'écran d'affichage, image plus grande par exemple?  J'ai laissé tomber sans trouver et j'utilise loadPixels :
ce qui pourrait donner qq chose comme:

loadPixels();
    newTissu.loadPixels();
    for (int i = 0; i < (width*height); i++) {
     newTissu.pixels[i] =tissu.pixels[i];
    }

Hors ligne

 

#3 2012-12-30 13:11:07 Re : img.copy() assombrit la copie à chaque passe

Olivier
N°4
Lieu: Chalon sur la Saône
Date d'inscription: 2009-04-07
Messages: 1471
Site web

Re: img.copy() assombrit la copie à chaque passe



citation :

était lié aux dimensions de l'image par rapport à l'écran d'affichage

En l’occurrence, dans mon cas, ce n'est pas la scène que je copy(), mais l'image...
Bilan : que l'image soit  affichée ou non, le résultat est le même: le png enregistré est de plus en plus sombre... sad

img.pixels[i] résout effectivement le problème (d'ailleurs, dans un autre sketch, j'avais pu constater que cette solution était plus rapide que copy())

Étrange tout de même, cette histoire...
Je vais attendre quelques éventuels autres points de vue ici, puis je vais faire un ticket sur le bugtracker de P5 (j'imagine qu'il y en a un).

Merci Chrisjo... smile


L'Amour au Peuple !

Hors ligne

 

#4 2013-01-11 14:41:12 Re : img.copy() assombrit la copie à chaque passe

oyster_twiter
membre
Lieu: saint-herblain
Date d'inscription: 2008-04-01
Messages: 444
Site web

Re: img.copy() assombrit la copie à chaque passe



Olivier,

Je suis sous xubuntu 12.04, Processing 2.0b7, j'ai testé ton code et je n'ai pas le même problème que toi. L'image ne noircie pas...

Hors ligne

 

#5 2013-01-12 13:57:14 Re : img.copy() assombrit la copie à chaque passe

Olivier
N°4
Lieu: Chalon sur la Saône
Date d'inscription: 2009-04-07
Messages: 1471
Site web

Re: img.copy() assombrit la copie à chaque passe



Bigre...

Je viens de tester sur la 2.0b7 sur Ubuntu 12.04 et j'ai toujours le même problème... hmm
(pour se rendre compte du noircissement, il faut cliquer sur l'image au moins une trentaine de fois...)

Tu es en 64bits ? Tu tournes avec un java particulier ?

Étonnant cette histoire


L'Amour au Peuple !

Hors ligne

 

#6 2013-01-12 17:12:11 Re : img.copy() assombrit la copie à chaque passe

emoc
@#@*$
Lieu: Quimper
Date d'inscription: 2008-01-28
Messages: 1576
Site web

Re: img.copy() assombrit la copie à chaque passe



Hello,

Ca me rappelle un bug avec la couche alpha, je ne sais pas si ça peut avoir un rapport :
il y a des approximations dans les calculs car les pixels sont codés sur entiers de 32 bits (8 pour R, 8 pour G, 8 pour B, 8 pour alpha et une cuillérée pour tata josiane ) et en multipliant ces calculs, l'approximation augmente à chaque fois l'erreur et puis finalement ça noirçit...

Peut-être jeter un oeil sur le code source, je ne sais pas s'il y a une différence dans l'écriture des fonctions entre les versions 32 et 64bits ?

Probablement à signaler aussi! http://code.google.com/p/processing/issues/list

Hors ligne

 

#7 2013-01-13 17:54:41 Re : img.copy() assombrit la copie à chaque passe

oyster_twiter
membre
Lieu: saint-herblain
Date d'inscription: 2008-04-01
Messages: 444
Site web

Re: img.copy() assombrit la copie à chaque passe



pour info je suis en 32 bits et mon java :

java version "1.6.0_24"
OpenJDK Runtime Environment (IcedTea6 1.11.5) (6b24-1.11.5-0ubuntu1~12.04.1)
OpenJDK Server VM (build 20.0-b12, mixed mode)

Hors ligne

 

fil rss de cette discussion : rss

Pied de page des forums

Powered by FluxBB

codelab, graphisme & code : emoc / 2008-2024