Ir al contenido


Foto

[RESUELTO] El Retrato de Manuela (Guardar un TImage usando TSavePictureDialog)


  • Por favor identifícate para responder
11 respuestas en este tema

#1 TiammatMX

TiammatMX

    Advanced Member

  • Miembros
  • PipPipPip
  • 1.750 mensajes
  • LocationUniverso Curvo\Vía Láctea\Sistema Solar\Planeta Tierra\América\México\Ciudad de México\Xochimilco\San Gregorio Atlapulco\Home

Escrito 08 julio 2010 - 03:50

Hola, muchachos...

Les cuento, tengo un TImage que en éste momento ya contiene el resultado de un scanneo realizado con TWAIN, pero ahora, hay que guardar ésa imagen.

Yo tengo éste código:




delphi
  1. procedure TfrmDgtlzr.tolbtnGrdClick(Sender: TObject);
  2. var
  3.   fsArchvImgn : TFileStream;
  4.   sNmbrArchv : string;
  5. begin
  6.   if svepctrdlgGrd.Execute then
  7.   begin
  8.     sNmbrArchv := QuotedStr(sIncP)+QuotedStr(sMncP)+QuotedStr(sCrpP)+'.jpg';
  9.     svepctrdlgGrd.InitialDir := 'C: mp';
  10.     svepctrdlgGrd.FileName := sNmbrArchv;
  11.     try
  12.       fsArchvImgn := TFileStream.Create(sNmbrArchv, fmCreate or fmShareDenyRead);
  13.     finally
  14.       FreeAndNil(fsArchvImgn);
  15.     end;
  16.   end;
  17.   tolbtnScnnr.Enabled := True;
  18.   jvdrctrylstboxDrc.Enabled := True;
  19.   jvdrvcmbDsc.Enabled := True;
  20.   jvflelstboxArch.Enabled := True;
  21.   tolbtnGrd.Enabled := False;
  22. end;



Pero no me guarda nada, y necesito que se guarde el resultado del scanneo contenido en el TImage. ¿Alguna ayuda que me puedan prestar? ¿Qué me está faltando de poner o quitar para que se guarde?

Y por cierto, para amenizar el hilo, el vídeo del título, "El Retrato de Manuela", de Chava Flores...
El Retrato de Manuela
  • 0

#2 escafandra

escafandra

    Advanced Member

  • Moderadores
  • PipPipPip
  • 3.994 mensajes
  • LocationMadrid - España

Escrito 08 julio 2010 - 04:00

En tu código no veo que guardes la imagen. No entiendo donde la tienes, dices que en un TImage, pero no veo referencias a él.

Desde un TImage, si lo tienes en el TBitmap, puedes hacer esto:


delphi
  1. Image.Picture.Bitmap.SaveToFile(Nombre_archivo);



Si no está en el Bitmap, puedes hacer:


delphi
  1. Image.Picture.SaveToFile(Nombre_archivo);



No necesitas crear un TFileStream.

Saludos.

  • 0

#3 TiammatMX

TiammatMX

    Advanced Member

  • Miembros
  • PipPipPip
  • 1.750 mensajes
  • LocationUniverso Curvo\Vía Láctea\Sistema Solar\Planeta Tierra\América\México\Ciudad de México\Xochimilco\San Gregorio Atlapulco\Home

Escrito 08 julio 2010 - 04:07

En tu código no veo que guardes la imagen. No entiendo donde la tienes, dices que en un TImage, pero no veo referencias a él.


Creo que ése es el problema...

Desde un TImage, si lo tienes en el TBitmap,  puedes hacer esto:


delphi
  1. Image.Picture.Bitmap.SaveToFile(Nombre_archivo);



Si  no está en el Bitmap, puedes hacer:


delphi
  1. Image.Picture.SaveToFile(Nombre_archivo);



¿Y si quiero que se guarde como JPEG? Perdón por la pregunta, pero no tengo la más remota idea de lo que estoy haciendo, es mi primera vez con imágenes...

Gracias, Escafandra.
  • 0

#4 TiammatMX

TiammatMX

    Advanced Member

  • Miembros
  • PipPipPip
  • 1.750 mensajes
  • LocationUniverso Curvo\Vía Láctea\Sistema Solar\Planeta Tierra\América\México\Ciudad de México\Xochimilco\San Gregorio Atlapulco\Home

Escrito 08 julio 2010 - 04:14

Si no está en el Bitmap, puedes hacer:


delphi
  1. Image.Picture.SaveToFile(Nombre_archivo);



Lo hice así, como lo consignas y me arroja un error al intentar leerlo nuevamente al TImage con:



delphi
  1. imgDct.Picture.LoadFromFile('C:\tmp\'+sIncP+sMncP+sCrpP+'.jpg');



El error pone "JPEG error #53"
  • 0

#5 Fenareth

Fenareth

    Advanced Member

  • Moderador
  • PipPipPip
  • 3.486 mensajes
  • LocationMexico City

Escrito 08 julio 2010 - 04:17

......


delphi
  1. imgDct.Picture.LoadFromFile('C:\tmp\'+sIncP+sMncP+sCrpP+'.jpg');



El error pone "JPEG error #53"


LoadFromFile ???... No debería ser SaveToFile ?

Saludox ! :)
  • 0

#6 TiammatMX

TiammatMX

    Advanced Member

  • Miembros
  • PipPipPip
  • 1.750 mensajes
  • LocationUniverso Curvo\Vía Láctea\Sistema Solar\Planeta Tierra\América\México\Ciudad de México\Xochimilco\San Gregorio Atlapulco\Home

Escrito 08 julio 2010 - 04:19

LoadFromFile ???... No debería ser SaveToFile ?

Saludox ! :)


Es cuando intento leerlo nuevamente para mostrarlo al usuario por medio del mismo TImage...
  • 0

#7 Fenareth

Fenareth

    Advanced Member

  • Moderador
  • PipPipPip
  • 3.486 mensajes
  • LocationMexico City

Escrito 08 julio 2010 - 04:26


LoadFromFile ???... No debería ser SaveToFile ?

Saludox ! :)


Es cuando intento leerlo nuevamente para mostrarlo al usuario por medio del mismo TImage...


Ah ya ves cómo no te explicas, jejejeje ? :D.... yo mejor sigo con mi dolor de cabeza... (y)

Saludox ! :)
  • 0

#8 TiammatMX

TiammatMX

    Advanced Member

  • Miembros
  • PipPipPip
  • 1.750 mensajes
  • LocationUniverso Curvo\Vía Láctea\Sistema Solar\Planeta Tierra\América\México\Ciudad de México\Xochimilco\San Gregorio Atlapulco\Home

Escrito 08 julio 2010 - 04:29

Ah ya ves cómo no te explicas, jejejeje ? :D .... yo mejor sigo con mi dolor de cabeza... (y)

Saludox ! :)


Gracias por tu aportación. Se lee que intento nuevamente subir el archivo al TImage cuando arroja el error, posiblemente tú no viste ésa parte...
  • 0

#9 TiammatMX

TiammatMX

    Advanced Member

  • Miembros
  • PipPipPip
  • 1.750 mensajes
  • LocationUniverso Curvo\Vía Láctea\Sistema Solar\Planeta Tierra\América\México\Ciudad de México\Xochimilco\San Gregorio Atlapulco\Home

Escrito 08 julio 2010 - 04:38

Lo hice así, como lo consignas y me arroja un error al intentar leerlo nuevamente al TImage con:



delphi
  1. imgDct.Picture.LoadFromFile('C: mp'+sIncP+sMncP+sCrpP+'.jpg');



El error pone "JPEG error #53"


Como añadido que puede ser útil, si voy con el Explorador de Windows a la carpeta que contiene las imágenes y hago doble click, las imágenes se muestran PERFECTAMENTE bien.

¿Alguna luz sobre éste caso?
  • 0

#10 escafandra

escafandra

    Advanced Member

  • Moderadores
  • PipPipPip
  • 3.994 mensajes
  • LocationMadrid - España

Escrito 08 julio 2010 - 04:39

Prueba así:



delphi
  1. uses Jpeg;
  2.  
  3.  
  4. procedure TForm1.Button1Click(Sender: TObject);
  5. var
  6.   JPGImage: TJPEGImage;
  7. begin
  8.   JPGImage:= TJPEGImage.Create;
  9.   JPGImage.Assign(Image1.Picture.Bitmap);
  10.   JPGImage.SaveToFile('c:\prueba.jpg');
  11.   JPGImage.Free;
  12. end;



Saludos.
  • 0

#11 TiammatMX

TiammatMX

    Advanced Member

  • Miembros
  • PipPipPip
  • 1.750 mensajes
  • LocationUniverso Curvo\Vía Láctea\Sistema Solar\Planeta Tierra\América\México\Ciudad de México\Xochimilco\San Gregorio Atlapulco\Home

Escrito 08 julio 2010 - 05:05

Prueba así:



delphi
  1. uses Jpeg;
  2.  
  3.  
  4. procedure TForm1.Button1Click(Sender: TObject);
  5. var
  6.   JPGImage: TJPEGImage;
  7. begin
  8.   JPGImage:= TJPEGImage.Create;
  9.   JPGImage.Assign(Image1.Picture.Bitmap);
  10.   JPGImage.SaveToFile('c:prueba.jpg');
  11.   JPGImage.Free;
  12. end;



Saludos.


Y funcionó EXCELENTEMENTE BIEN, gracias nuevamente, Escafandra. (y) (y) (b) (b) (b)
  • 0

#12 escafandra

escafandra

    Advanced Member

  • Moderadores
  • PipPipPip
  • 3.994 mensajes
  • LocationMadrid - España

Escrito 08 julio 2010 - 05:33


Lo hice así, como lo consignas y me arroja un error al intentar leerlo nuevamente al TImage con:



delphi
  1. imgDct.Picture.LoadFromFile('C: mp'+sIncP+sMncP+sCrpP+'.jpg');



El error pone "JPEG error #53"


Como añadido que puede ser útil, si voy con el Explorador de Windows a la carpeta que contiene las imágenes y hago doble click, las imágenes se muestran PERFECTAMENTE bien.

¿Alguna luz sobre éste caso?


Te explico. Al hacerlo así guardas un archivo bmp con extensión jpg, por eso lo podías abrir con el S.O. y no desde delphi. Usando la clase TJPEGImage guardas un jpg. :)


Saludos.
  • 0