Página 1 de 1
Comprimir imagenes
Publicado: Jue Dic 12, 2013 12:38 pm
por perolero
Hola a todos:
Mucho tiempo sin dejarme ver por aquí. Tengo un problema, estoy haciendo una aplicación que sube imagenes a un servidor web, que aloja una web en el que las imagenes deben de tener un tamaño determinado para ser mostradas en concreto 200*150 px.
Pregunta, existe en Xailer algun modo de poder configurar una imagen cualquiera a unas dimensiones determinadas, como paso previo a subirlas al servidor web mediante FTPFile.
Un saludo.
Emilio Gil
Comprimir imagenes
Publicado: Jue Dic 12, 2013 7:42 pm
por jfgimenez
Emilio,
> Mucho tiempo sin dejarme ver por aquí. Tengo un
> problema, estoy haciendo una aplicación que sube imagenes a
> un servidor web, que aloja una web en el que las imagenes
> deben de tener un tamaño determinado para ser mostradas en
> concreto 200*150 px.
>
> Pregunta, existe en Xailer algun modo de poder configurar
> una imagen cualquiera a unas dimensiones determinadas, como
> paso previo a subirlas al servidor web mediante FTPFile.
échale un vistazo al método MakeThumbnail() de TPicture. Al
redimensionar la imagen se mantiene la relación de aspecto, es decir, no
se pierden las proporciones. Y los parámetros de ancho y alto son para
indicar el tamaño máximo que quieras obtener, pero la imagen resultante
puede ser menor en anchura o altura para mantener las proporciones.
Un saludo,
José F. Giménez
http://www.xailer.com
http://www.xailer.info
Comprimir imagenes
Publicado: Jue Dic 12, 2013 11:18 pm
por perolero
Muchas gracias José, me sacas de un buen apuro.
Un saludo,
Emilio Gil
Comprimir imagenes
Publicado: Vie Dic 13, 2013 8:26 pm
por perolero
Hola José:
Estoy probando y no me funciona, tengo la FreeImage.dll (versión 3.14.1.0) en el mismo directorio que el ejecutable y uso Xailer-Pro versión 2.5.1.
El codigo que utilizo es el siguiente
WITH OBJECT ::oPicture := TPicture():New( Self )
if File("volante.jpg") //una imagen que también tengo en directorio del ejecutable
:cName := "volante.jpg"
:MakeThumbNail(200,200)
endif
END WITH
Me falta poner alguna cosa más para que funcione correctamente.
Utilizo como freeimage.h la que viene descrita en la ayuda de xailer en la opción TPicture:MakeThumbNail
#define BMP_DEFAULT 0
#define BMP_SAVE_RLE 1
#define CUT_DEFAULT 0
#define DDS_DEFAULT 0
#define EXR_DEFAULT 0 // save data as half with piz-based wavelet compression
#define EXR_FLOAT 0x0001 // save data as float instead of as half (not recommended)
#define EXR_NONE 0x0002 // save with no compression
#define EXR_ZIP 0x0004 // save with zlib compression, in blocks of 16 scan lines
#define EXR_PIZ 0x0008 // save with piz-based wavelet compression
#define EXR_PXR24 0x0010 // save with lossy 24-bit float compression
#define EXR_B44 0x0020 // save with lossy 44% float compression - goes to 22% when combined with EXR_LC
#define EXR_LC 0x0040 // save images with one luminance and two chroma channels,
#define FAXG3_DEFAULT 0
#define GIF_DEFAULT 0
#define GIF_LOAD256 1 // Load the image as a 256 color image with ununsed palette entries
#define GIF_PLAYBACK 2 // 'Play' the GIF to generate each frame (as 32bpp)
#define HDR_DEFAULT 0
#define ICO_DEFAULT 0
#define ICO_MAKEALPHA 1 // convert to 32bpp and create an alpha channel from the AND-mask when loading
#define IFF_DEFAULT 0
#define J2K_DEFAULT 0 // save with a 16:1 rate
#define JP2_DEFAULT 0 // save with a 16:1 rate
#define JPEG_DEFAULT 0 // loading (see JPEG_FAST); saving (see JPEG_QUALITYGOOD)
#define JPEG_FAST 0x0001 // load the file as fast as possible, sacrificing some quality
#define JPEG_ACCURATE 0x0002 // load the file with the best quality, sacrificing some speed
#define JPEG_CMYK 0x0004 // load separated CMYK "as is" (use | to combine with other load flags)
#define JPEG_QUALITYSUPERB 0x80 // save with superb quality (100:1)
#define JPEG_QUALITYGOOD 0x0100 // save with good quality (75:1)
#define JPEG_QUALITYNORMAL 0x0200 // save with normal quality (50:1)
#define JPEG_QUALITYAVERAGE 0x0400 // save with average quality (25:1)
#define JPEG_QUALITYBAD 0x0800 // save with bad quality (10:1)
#define JPEG_PROGRESSIVE 0x2000 // save as a progressive-JPEG (use | to combine with other save flags)
#define KOALA_DEFAULT 0
#define LBM_DEFAULT 0
#define MNG_DEFAULT 0
#define PCD_DEFAULT 0
#define PCD_BASE 1 // load the bitmap sized 768 x 512
#define PCD_BASEDIV4 2 // load the bitmap sized 384 x 256
#define PCD_BASEDIV16 3 // load the bitmap sized 192 x 128
#define PCX_DEFAULT 0
#define PNG_DEFAULT 0
#define PNG_IGNOREGAMMA 1 // avoid gamma correction
#define PNM_DEFAULT 0
#define PNM_SAVE_RAW 0 // If set the writer saves in RAW format (i.e. P4, P5 or P6)
#define PNM_SAVE_ASCII 1 // If set the writer saves in ASCII format (i.e. P1, P2 or P3)
#define PSD_DEFAULT 0
#define RAS_DEFAULT 0
#define SGI_DEFAULT 0
#define TARGA_DEFAULT 0
#define TARGA_LOAD_RGB888 1 // If set the loader converts RGB555 and ARGB8888 -> RGB888.
#define TIFF_DEFAULT 0
#define TIFF_CMYK 0x0001 // reads/stores tags for separated CMYK (use | to combine with compression flags)
#define TIFF_PACKBITS 0x0100 // save using PACKBITS compression
#define TIFF_DEFLATE 0x0200 // save using DEFLATE compression (a.k.a. ZLIB compression)
#define TIFF_ADOBE_DEFLATE 0x0400 // save using ADOBE DEFLATE compression
#define TIFF_NONE 0x0800 // save without any compression
#define TIFF_CCITTFAX3 0x1000 // save using CCITT Group 3 fax encoding
#define TIFF_CCITTFAX4 0x2000 // save using CCITT Group 4 fax encoding
#define TIFF_LZW 0x4000 // save using LZW compression
#define TIFF_JPEG 0x8000 // save using JPEG compression
#define WBMP_DEFAULT 0
#define XBM_DEFAULT 0
#define XPM_DEFAULT 0
Muchas gracias.
Saludos,
Emilio Gil.
Comprimir imagenes
Publicado: Sab Dic 14, 2013 12:06 pm
por jfgimenez
Emilio,
> Estoy probando y no me funciona, tengo la FreeImage.dll
> (versión 3.14.1.0) en el mismo directorio que el ejecutable
> y uso Xailer-Pro versión 2.5.1.
>
> El codigo que utilizo es el siguiente
>
> WITH OBJECT ::oPicture := TPicture():New( Self )
>
> if File("volante.jpg") //una imagen que también tengo
> en directorio del ejecutable
>
> :cName := "volante.jpg"
> :MakeThumbNail(200,200)
>
> endif
>
> END WITH
>
>
> Me falta poner alguna cosa más para que funcione
> correctamente.
Ponlo así (ojo, lo he escrito al vuelo y sin probarlo):
IF File( "volante.jpg" )
WITH OBJECT TPicture():New()
:Load( "volante.jpg" )
cData := :MakeThumbnail( 200, 200 )
:End()
END
ENDIF
y en cData tienes la cadena (buffer) que tienes que subir al FTP. Si lo
necesitas como archivo, puedes guardarlo con FCreate() / FWrite() /
FClose(). No uses nunca MemoWrit() para esto.
Un saludo,
José F. Giménez
http://www.xailer.com
http://www.xailer.info
Comprimir imagenes
Publicado: Sab Dic 14, 2013 1:16 pm
por perolero
Hola José:
He probado con
WITH OBJECT ::oPicture := TPicture():New( Self )
if File("volante.jpg")
:load("volante.jpg")
c := :MakeThumbNail(200,200)
:End()
file_id := FCreate("volante1.jpg")
FWrite(file_id,c)
FClose(file_id)
endif
END WITH
Usando la libreria FreeImage.dll (varias versiones) y sin usarla y sigue presentando el mismo problema IMAGEN INVERTIDA.
Comprimir imagenes
Publicado: Lun Dic 16, 2013 10:05 am
por jfgimenez
Emilio,
> He probado con
>
> WITH OBJECT ::oPicture := TPicture():New( Self )
>
> if File("volante.jpg")
>
> :load("volante.jpg")
> c := :MakeThumbNail(200,200)
> :End()
> file_id := FCreate("volante1.jpg")
> FWrite(file_id,c)
> FClose(file_id)
> endif
>
> END WITH
>
> Usando la libreria FreeImage.dll (varias versiones) y sin
> usarla y sigue presentando el mismo problema IMAGEN
> INVERTIDA.
Prueba con esta. Esta es la versión que yo usaba en su momento, que es
más pequeña, y si no se usa nada especial de las últimas versiones, vale
perfectmente:
https://www.dropbox.com/s/ychne5sxsk8n5o0/FreeImage.zip
Un saludo,
José F. Giménez
http://www.xailer.com
http://www.xailer.info
Comprimir imagenes
Publicado: Lun Dic 16, 2013 11:21 am
por perolero
Hola Jose:
MUCHISIMAS GRACIAS, ha sido cambiar la Freeimage.dll a la que tu me has enviado y como diría René "Listo el pollo".
Un saludo,
Emilio Gil.
Comprimir imagenes
Publicado: Lun Dic 16, 2013 11:58 am
por jfgimenez
Emilio,
> MUCHISIMAS GRACIAS, ha sido cambiar la Freeimage.dll a la
> que tu me has enviado y como diría René "Listo el pollo".
Me alegro de que te haya funcionado.
Pero lo de "listo el pollo", si no recuerdo mal era de Vikthor
(
http://listoelpollo.blogspot.com.es)

Un saludo,
José F. Giménez
http://www.xailer.com
http://www.xailer.info