Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   como asignarle los componente dialogs a este codigo (https://www.clubdelphi.com/foros/showthread.php?t=55280)

kurono 12-04-2008 06:50:05

como asignarle los componente dialogs a este codigo
 
hola amigos nuevamente yo tengo un problemita pues tengo este codigo donde convierto imagenes de bmp a jpeg todo bien hasta ahi pero me llego la idea de utilizar los componente dialogs para abrir y guardar las imagenes que utilizo bueno aqui le muestro el codigo que me funciona y el que no

el que funciona:

Código Delphi [-]
var bmp : TBitmap;
     Jpg : TJpegImage;

 begin

   bmp := TBitmap.Create;
   jpg := TJpegImage.Create;

     bmp.LoadFromFile ('c:\chame.bmp');
     jpg.Assign(bmp);
     jpg.SaveToFile ('c:\chame.jpg');

     jpg.Free;
     bmp.Free;

end;

end.

el que no funciona

Código Delphi [-]
 bmp := TBitmap.Create;
   jpg := TJpegImage.Create;

     bmp.LoadFromFile(abrir2.filename);
     jpg.Assign(bmp);
     jpg.SaveToFile(guardar2.filename);
     jpg.Free;
     bmp.Free;

espero que me ayuden

Black_Ocean 12-04-2008 08:02:19

Este procedimiento de ejemplo que acabo de hacer si funciona :P

1. Inserta un componente OpenPictureDialog (paleta Dialogs) y un Button (paleta Standard) en tu formulario.
2. Agrega el código fuente siguiente de acuerdo a tus requerimientos:

Código Delphi [-]
uses
  JPEG;

procedure TForm1.Button1Click(Sender: TObject);
var
  JPEGImage: TJPEGImage; // Variable de tipo TJPEGImage, que son contenedores para imágenes JPG/JPEG
  Bitmap: TBitmap; // Variable de tipo TBitmap, que son contenedores para imágenes BMP
  sArchivoDestino: TFileName;
begin
  sArchivoDestino := '';
  OpenPictureDialog1.Filter := 'Bitmaps (*.bmp)|*.bmp';
  OpenPictureDialog1.Title := 'Abrir archivo...';
  if OpenPictureDialog1.Execute then
  begin
    sArchivoDestino := InputBox('Guardar como...', 'Especifique el nombre de destino', sArchivoDestino);
    JPEGImage:= TJPEGImage.Create; //Creamos el objeto de clase TJPEGImage en la memoria
    Bitmap:= TBitmap.Create; //Creamos el objeto de clase TBitmap en la memoria
    try
      Bitmap.LoadFromFile(OpenPictureDialog1.FileName); //Cargamos al objeto de clase TBitmap una imagen deseada de formato BMP desde un archivo externo.
      JPEGImage.Assign(Bitmap); // Asignamos (copiamos) la imagen contenida en el objeto de clase TBitmap al objeto de clase TJPEGImage que habíamos cargado anteriormente.
      JPEGImage.SaveToFile(ExtractFilePath(OpenPictureDialog1.FileName) + ChangeFileExt(sArchivoDestino, '.jpg')); //Guardamos al disco duro el archivo en formato JPG que es el que requerías.
    finally
      Bitmap.Free; //Liberamos el objeto de tipo TBitmap de la memoria porque, en este caso, ya no lo usaremos más
      JPEGImage.Free; //Liberamos el objeto de tipo TJPEGImage de la memoria porque, en este caso, ya no lo usaremos más
    end;
  end;
end;

Si no quieres usar la función InputBox para mostrar un diálogo básico, ocupa el componente SaveDialog =) Yo quise usar InputBox :p

Saludos

MaMu 12-04-2008 08:14:51

Y las dimensiones de la imagen (Width,Heigth) no hay que tomarlas en cuenta cuando no visualizamos la imagen?

Saludos

Black_Ocean 12-04-2008 08:24:47

Cita:

Empezado por mamu (Mensaje 279519)
Y las dimensiones de la imagen (Width,Heigth) no hay que tomarlas en cuenta cuando no visualizamos la imagen?

Saludos

El código que especifiqué es un ejemplo para que Él lo modifique o agregue algo más de acuerdo a su requerimiento. Si quieres aportar o mejorar este pequeño código bienvenido sea ;)

Saludos y buena suerte.

kurono 12-04-2008 08:36:07

ok lo probare


La franja horaria es GMT +2. Ahora son las 06:13:52.

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