Ver Mensaje Individual
  #1  
Antiguo 03-05-2020
Avatar de Maniches
Maniches Maniches is offline
Miembro
 
Registrado: nov 2012
Ubicación: Lima - Perú
Posts: 67
Reputación: 12
Maniches Va por buen camino
Lightbulb Nuevo formato de imagen para la web - WEBP

Hola Amig@s del foro
He estado investigando con respecto a este formato y hacer que delphi lo soporte.
He buscado en foros y he logrado encontrar la librería DLL y la definición de usar la librería que Google proporciona.

He intentado hacer la conversión de un archivo *.BMP hacia *.Webp obteniendo un resultado de BMP(655kb) y WebP(134kb).
el problema que está ocurriendo es que no está respetando los colores de la imagen original. tiene la misma claridad, pero no los mismos colores.

les adjunto una imagen para que vean el resultado. les comparto parte del código y me ayudan con sus sugerencias o que puede estar haciéndose erradamente.

Definición de función que usa la librería:

Código Delphi [-]
  {$if defined(Win32)}
    LIB_WEBP = 'libwebp.dll';
  {$elseif defined(Win64)}
    LIB_WEBP = 'libwebp64.dll';

function WebPEncodeBGR(const bgr: PByte; width, height, stride: Integer; quality_factor: Single; var output: PByte): Cardinal; cdecl; external LIB_WEBP;

procedimiento que hace la conversión: (Se carga la imagen bmp al objeto TIMAGE)
Código Delphi [-]

imgConvertir: TImage;

procedure TForm1.btnConvertirWebPClick(Sender: TObject);
var
  src, dst: TBytes;
  data, pb: PByte;
  iy, wdt, hgt, datasize, stride: Integer;
  bmp: TBitmap;
begin
    bmp := TBitmap.Create; {Converting to Bitmap}
    bmp.PixelFormat := pf24bit;
    bmp.Width := imgConvertir.Picture.Width;
    bmp.Height := imgConvertir.Picture.Height;
    bmp.Canvas.Draw(0, 0, imgConvertir.Picture.Graphic);
    stride := NativeInt(bmp.ScanLine[1]) - NativeInt(bmp.ScanLine[0]);
    datasize := WebPEncodeRGB(bmp.ScanLine[0], bmp.Width, bmp.Height, stride, 100, data);
    SetLength(src, datasize);
    MoveMemory(src, data, datasize);
    TFile.WriteAllBytes(ExtractFilePath(Application.ExeName)+'\tiger.webp', src);
    bmp.Free;

¿Qué sugerencia u opiniones? ¿capaz se está enviando los parámetros de forma errada?
Es muy interesante usar este formato liviano para los desarrollos web. Les dejo un link para que vean su información: https://developers.google.com/speed/webp
Imágenes Adjuntas
Tipo de Archivo: jpg 2020-05-03_11-13-22.jpg (33,9 KB, 24 visitas)
__________________
Maniches
maniches@outlook.com

Última edición por Casimiro Notevi fecha: 03-05-2020 a las 20:55:48.
Responder Con Cita