26 de enero de 2018

Utilice parámetros codificados para guardar sus imágenes con GDI+

Artículo original: Use encoder parameters to save your images with GDI+
https://vfpimaging.blogspot.com/2006/06/use-encoder-parameters-to-save-your_3564.html
Autor: Cesar Ch.
Traducido por: Ana María Bisbé York


El método SaveToFile de la clase GpImage en _gdiplus.vcx en VFP9 "guarda el objeto imagen en un archivo de disco, utilizando especificados o formato de imagen y parámetros opcionales."

He aquí los más importantes:

QUALITY (soportado por JPEG)

Especifica el nivel de compresión al guardar la imagen JPEG. Un nivel de calidad de 0 se corresponde a la mayor compresión, y el nivel de 100 corresponde a la menor compresión.

Ejemplo 1: Guarda la imagen con 70 % de calidad

LOCAL lcSource
lcSource = GETPICT()
LOCAL loImage AS GpImage OF HOME() + ffc/_gdiplus.vcx
loImage = NEWOBJECT("GpImage", HOME() + "ffc/_gdiplus.vcx")
loImage.CreateFromFile(lcSource)
loImage.SaveToFile("c:\MyImage.jpg","image/jpeg", "quality=70")

TRANSFORMATION (soportado por JPEG)

GDI+ brinda las siguientes transformaciones que se pueden realizar con imágenes JPEG sin perder información:

  • Rotar 90 grados
  • Rotar 180 grados
  • Rotar 270 grados
  • Girar horizontalmente
  • Girar verticalmente

Cada caso de la lista anterior se corresponde a una Constante de Gdiplus, que necesita pasar junto con la "transformación"

Puede proceder a realizar la transformación sin pérdida de información si el archivo utilizado para construir el objeto Image es un archivo JPEG y tanto el ancho como el alto de la imagen son múltiplo de 16. Si el ancho y el alto de la imagen no son múltiplos de 16, GDI+ no hará su mejor esfuerzo para preservar la calidad de la imagen cuando aplique una transformación de rotación o giro.

Ejemplo 2: Guarda la imagen con calidad del 50% Y Rota 180 grados

#DEFINE EncoderValueTransformRotate90 13
#DEFINE EncoderValueTransformRotate180 14 
#DEFINE EncoderValueTransformRotate270 15 
#DEFINE EncoderValueTransformFlipHorizontal 16 
#DEFINE EncoderValueTransformFlipVertical 17
LOCAL lcSource
lcSource = GETPICT()
LOCAL loImage AS GpImage OF HOME() + ffc/_gdiplus.vcx
loImage = NEWOBJECT("GpImage", HOME() + "ffc/_gdiplus.vcx")
loImage.CreateFromFile(lcSource)
loImage.SaveToFile("c:\MyImage.jpg","image/jpeg", ;
  "quality=50, transformation=14")

¡ Esto realiza la rotación y el giro con una operación sencilla y rápida !

Para imágenes TIFF, he aquí los parámetros más comunes:

SAVEFLAG (soportado por TIFF)

Utilizado para la creación de imágenes con múltiples marcos

Vea mi artículo en UTMAG de Mayo 2006: Multiframe Images with GDI+

COMPRESSION (soportado por TIFF)

#DEFINE EncoderValueCompressionLZW 2 
#DEFINE EncoderValueCompressionCCITT3 3 
#DEFINE EncoderValueCompressionCCITT4 4 
#DEFINE EncoderValueCompressionRle 5 
#DEFINE EncoderValueCompressionNone 6

COLORDEPTH (soportado por TIFF)

Profundidad de color en Bytes por píxeles

Estos están definidos para GDI+; pero no están soportados por los codificadores estándar: 'COMPRESSION', 'SCANMETHOD', 'VERSION' y 'RENDERMETHOD'.

Fuente: MSDN

Vea también este post de mi blog: ROTATE / FLIP IMAGES WITH VFP9 AND GDI+

Nota de la traductora: Ese post está traducido bajo el título: "Rotar / invertir imágenes con VFP 9 y GDI+" y publicado en https://comunidadvfp.blogspot.com/2006/07/rotar-invertir-imagenes-con-vfp-9-y-gdi.html

No hay comentarios. :

Publicar un comentario

Los comentarios son moderados, por lo que pueden demorar varias horas para su publicación.