Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   como comprimir una imagen (https://www.clubdelphi.com/foros/showthread.php?t=96039)

esublim 08-01-2023 21:30:16

como comprimir una imagen
 
Código Delphi [-]
buscar_imagen.Execute;
img1.Bitmap.LoadFromFile(buscar_imagen.FileName);

tengo ese codigo para cargar una imagfen en un timage, quiero bajarle la resolucion, los pixeles y el tamaño para despues guardarlo en un blog de mysql pero quiero que sea lijera

ya me hace todos los procesos lo guardo y todo. pero quiero que al momento de seleccionar una imegen de mucha resoulicion bajarlo y asi me la guarde en la base de datos.

ojo repito ya yo muestro y guardo en la base, me falta es bajarle la resolucion antes de guardarlo en la base de datos.

muchas gracias

Casimiro Notevi 08-01-2023 21:33:21

Hay varios hilos sobre ese tema, ejemplo, este mismo.

esublim 08-01-2023 22:35:10

No me sirve ese hilo. Por q baja todas las imágenes que subo. Lo q necesito es que por ejemplo si una imagen es de 4000 px x 3000 px lo baje a 600*500 por ejemplo.


Ese hilo baja todas las imágenes a un porcentaje. Y si la imagen es de maña calidad la baja más. La idea es q todas las imágenes por ejemplo se conviertan a 600*500 px

Casimiro Notevi 08-01-2023 23:00:32

https://neftali.clubdelphi.com/redim...-antialiasing/

escafandra 09-01-2023 20:54:03

Si lo que deseas es bajar el tamaño de la imagen en pixels puedes usar Stretch de TImage o con la API StretchBlt de GDI pero el resultado es mejor usando GDIplus. En este hilo explico como hacerlo con GDIplus Flat con dos funciones básicas:
Código Delphi [-]
//---------------------------------------------------------------------------
// Dibuja un Bitmap en un hDC ajustando su tamaño para que quepa entero
// en las coordenadas dadas
procedure DrawImageRect(DC: HDC; Bitmap: HBITMAP; X, Y, W, H: integer);
var
  Graphics: Pointer;
  GBitmap:  THANDLE;
begin
  GdipCreateBitmapFromHBITMAP(Bitmap, 0, GBitmap);
  GdipCreateFromHDC(DC, Graphics);
  GdipDrawImageRect(Graphics, GBitmap, X, Y, W, H);
  GdipDisposeImage(GBitmap);
  GdipDeleteGraphics(Graphics);
end;

Código Delphi [-]
//-----------------------------------------------------------------------------
// Crea y devuelve un Bitmap con unas nuevas dimensiones y la imagen ajustada a estas
function CreateResizeBitmap(Bitmap: HBITMAP; H, W: integer): HBITMAP;
var
  Graphics: Pointer;
  GBitmap: THANDLE;
  DC, dcMem: HDC;
  bmOld: HBITMAP;
begin
  DC:= GetDC(0);
  Result:= CreateCompatibleBitmap(DC, W, H);
  dcMem:= CreateCompatibleDC(DC);
  bmOld:= SelectObject(dcMem, Result);

  GdipCreateFromHDC(dcMem, Graphics);
  GdipCreateBitmapFromHBITMAP(Bitmap, 0, GBitmap);
  GdipDrawImageRect(Graphics, GBitmap, 0, 0, H, W);
  GdipDisposeImage(GBitmap);
  GdipDeleteGraphics(Graphics);

  SelectObject(dcMem, bmOld);
  DeleteDC(dcMem);
  ReleaseDC(0, DC);
end;

El tema del formato final en el que se guarde la imagen es otro asunto que también se puede hacer con GDIplus.

Saludos.


La franja horaria es GMT +2. Ahora son las 15:59:23.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi