Página 1 de 1

Posible bug en TImageEditor

Publicado: Sab Abr 06, 2019 8:57 pm
por buzonjmartial
Buenas tardes,

Si comprueban el ejemplo de Xailer ImageEdit podréis comprobar como cambiar el brillo, contraste, etc de una foto.

Bueno, pues muevan el trackBar del contraste y verán que funciona, pero muevan el de saturación y verán que ya no funciona el contraste.

Después de dar muchas vueltas he visto, que una vez cambias la Property nSaturation, deja de funcionar el cambiar el contraste.

Creo que algo raro pasa en el código fuente de esa clase.

Re: Posible bug en TImageEditor

Publicado: Dom Abr 07, 2019 1:51 am
por buzonjmartial
Buenas noches,

Esta clase no funciona nada bien :?

Si me pudierais poner el samples modificado para que se le cambie, saturación por ejemplo y luego que al grabar a disco NO grabe la ORIGINAL ?.

Necesito, retocar todos los settings del ejemplo y grabar o devolver stream con los cambios hechos, no sin retocar.

La ayuda tampoco es muy clara.

Código: Seleccionar todo

   TImageEditor:nBrightness

   Luminosidad de la imagen.


Ámbito
 Asignable
 
Tipo
 Numérico
 
Valor inicial
 1.0
 
Valores posibles
 -100 a +100

Valores posibles
-100 a +100


Esto es incorrecto, porque sólo he podido probar de 0 a 2, el rango del brillo, de -100 a 100, en el momento que pones -1 ya está negra la imágen.

En fin, que si me pudiéseis aclarar algo, lo agradecería, he invertido varias horas en intentar que funcionara, pero algo va mal y además no tengo el código fuente de la clase.

Re: Posible bug en TImageEditor

Publicado: Lun Abr 08, 2019 12:59 pm
por ignacio
Buenos días,

Sólo pretende ser un ejemplo. Ne se ha pretendido hacer una aplicación completa. Es muy probable que los valores de todos los 'trackbar' estén fuera de rango.

Saludos


Re: Posible bug en TImageEditor

Publicado: Lun Abr 08, 2019 1:52 pm
por buzonjmartial
Buenos días Ignacio,

Ya sé que es un ejemplo, yo he hecho uno real y visto todos los comportamientos erróneos.

He puesto que probárais el sample, porque así lo comprobábais ustedes mismos. Pero lo que tocas de ciertos settings, son erróneos y luego pierdes esos cambios,
volviendo de nuevo a la original.

El tema es que el sample debería funcionar, porque debe de haber, alguna manera de comprobar que la clase funciona correctamente.

Re: Posible bug en TImageEditor

Publicado: Lun Abr 08, 2019 5:31 pm
por ignacio
Buenas tardes,

Guardar las modificaciones hechas es tan sencillo como: ::oImageEditor1:oPicture:Save( ... )

Los distintos valores que pueden tener las propiedades de manejo se aplican usando la función del API GdipSetImageAttributesColorMatrixy y GdipSetImageAttributesGamma. Ese código no se entrega. Lo siento.

Un saludo

Re: Posible bug en TImageEditor

Publicado: Lun Abr 08, 2019 6:33 pm
por buzonjmartial
Buenas tardes Ignacio,


Guardar las modificaciones hechas es tan sencillo como: ::oImageEditor1:oPicture:Save( ... )

Parece que ustedes tenéis unas librerías de Xailer diferentes a las mías, porque como se graba ya lo sabía, lo que intento decir, es que a mi no me graba los cambios,
usando el mismo programa sample que viene de muestra. Y que cuando cambio el valor de la saturación, el contraste ya no va bien, ya no se le puede cambiar el valor.

¿Habrá la posibilidad de que se hayan solucionado esos problemas y yo estoy usando una TImageEditor diferente con ciertos bugs?

Re: Posible bug en TImageEditor

Publicado: Lun Abr 08, 2019 9:10 pm
por jfgimenez
Joaquín,

1) para que guarde los cambios hay que ejecutar antes el método ApplyLevels(). Esto es porque se utiliza la imagen original y se aplican los filtros "al vuelo" cada vez que se pinta en pantalla. Una vez que "aplicas los cambios" es cuando se modifica la imagen.

2) He comprobado que la saturación es incompatible con el contraste. Me explico: todos los filtros utilizan una matriz de transformación de colores de 3x3. Pues bien, tanto la saturación como el contraste modifican los mismos elementos de la matriz (el brilo utiliza otros elementos), y como el contraste se aplica antes que la saturación, esta última sobreescribe los valores previos. Por eso "deja de funcionar" el contraste. Intentaré hacer algunas pruebas por si se pueden calcular esos valores teniendo en cuenta los dos filtros, pero no te puedo asegurar nada.

Re: Posible bug en TImageEditor

Publicado: Lun Abr 08, 2019 11:31 pm
por buzonjmartial
Gracias Jose,

por la explicación tan detallada, como siempre.

Lo de usar ApplyLevels() antes del save(), ya lo descubrí, pero sólo brillo y contraste.

Saturaciòn, transparencia y gamma, se pierden al hacer el save().

Re: Posible bug en TImageEditor

Publicado: Mar Abr 09, 2019 9:48 pm
por jfgimenez
Joaquín,

por lo que he podido ver, es verdad que sólo se contempla el brillo y el contraste. El resto de filtros se aplican al pintar la imagen en pantalla y ya está. Vamos a ver cómo metemos lo demás, aunque lo que sí te anticipo es que la transparencia no va a estar porque eso depende de lo que tengas debajo de la imagen, y claro, si guardas la imagen no hay forma de saber donde la vas a mostrar después. Quizás se podría hacer algo con el canal alfa, pero ya nos metemos en otras historias.

Re: Posible bug en TImageEditor

Publicado: Mar Abr 09, 2019 9:56 pm
por buzonjmartial
Ok!

Con la saturación ya me vale, pero también lo decía, porque puede llevar a confusión que el control tenga esas propiedades,
y luego no funcionen. Quizás, mejor quitar lo que no funcione y conforme lo implementéis añadirlo.

Y para otros usuarios, es fundamental que se sepa, que hay usar ApplyLevels() antes del save(),para que lo que se grabe en disco
sea lo mismo que se está viendo en pantalla. (Me volví loco hasta averiguarlo)


Gracias,