[Kde-devel-es] Imágenes con fondo transparente

Antonio Larrosa Jiménez kde-devel-es@mail.kde.org
Tue, 18 Feb 2003 21:29:37 +0100


El Martes, 18 de Febrero de 2003 20:11, José Luis Sánchez escribió:
> Hola a todos,
>

Hola,

> 	Necesito hacer una cosa que no veo claramente como enfocarla. Debo
> grabar un fichero '.gif', '.png' o '.jpeg' donde haya dibujado una serie
> de cosas y que el resto del fondo sea transparente, para poder
> utilizarlo en páginas Web a base de layers.
>
> 	¿Algiuen tiene una idea de como hacer eso?. Por más vueltas que le d=
oy

Es simple, usa sólo objetos del tipo QImage (de todas formas, dudo que 
puedas usar un QPixmap si no usas XWindows :) ), y usa 
QImage::setAlphaBuffer( true );

Después, sólo tienes que usar QImage::setPixel( x, y, qRgba( r, g, b, a) );
para poner cada pixel fácil y rápidamente.

En cualquier caso, yo te recomendaría que no usaras setPixel porque es 
rápido de programar, es el método más lento (a la hora de ejecutarse, 
aunque si haces la prueba y te va bien, tú verás :) ).

Lo mejor es que uses QImage::scanLine( y ); para coger un puntero a donde 
empiezan los datos de la linea y-ésima, y escribir tú mismo los valores de 
los píxeles de esa linea usando algo como:

for ( int x=0, QRgb *pixel=image.scanLine(y) ; x<width; x++, pixel++)
   *pixel=qRgba( r, g, b, a);

(Eso es suponiendo que tu imagen es de 32 bits)

> a la doc de la Qt no veo forma de hacerlo. Ah!, eso es importante, ahora
> mismo estoy trabajando con Qt, no con KDE. No lo hago con KDE por la
> sencilla razón de que en  la máquina que ha de funcionar el programa =
no
> tiene KDE (es un Solaris 8) y el proceso habrá de ejecutarse desde un
> cron sin interacción con el usuario.

Por la interacción con el usuario no te preocupes, el usar KApplication (al 
igual que el usar QApplication) tampoco necesita un servidor X 
funcionando. Aunque lo de que sea un Solaris, supongo que dificulta el 
encontrar paquetes de KDE. En cualquier caso, si Qt te ofrece toda la 
funcionalidad que necesitas, tampoco hay necesidad de usar KDE.

Saludos,

--
Antonio Larrosa Jimenez
KDE developer - larrosa@kde.org
http://developer.kde.org/~larrosa/
Language is the map. Ideas are the territory. The map is not the territory.