Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) TImage não salva imagem


Rodrigao

Pergunta

Bom dia a todos,

Tenho um procedimento na meu sistema que é mais ou menos assim...

O cliente clica em print screen para copiar uma tela. Depois abre o paint brush e seleciona a area que ele acha conveniente.

Clica em CTRL + C para Copiar.

No meu sistema eu carrego essa imagem selecionada assim:

if Clipboard.HasFormat(CF_PICTURE) then begin

Image1.Picture.Assign(Clipboard);

A imagem carrega no TImage mas quando eu dou o comando Image1.Picture.savetofile('c:\imagem1.bmp'); por exemplo

ele da a seguinte mensagem de erro "Bitmap is not valid".

Se alguém puder me ajudar...

Agradecido

Rodrigo

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0
No meu sistema eu carrego essa imagem selecionada assim:

if Clipboard.HasFormat(CF_PICTURE) then begin

Image1.Picture.Assign(Clipboard);

A imagem carrega no TImage mas quando eu dou o comando Image1.Picture.savetofile('c:\imagem1.bmp'); por exemplo

ele da a seguinte mensagem de erro "Bitmap is not valid".

Estava quase certo ... mas vou fazer algumas alterações para voce ver a diferença entre salvar a imagem como bmp e como jpg

a imagem como bmp ficaria em torno de 3073 kB

a imagem como jpg ficaria em torno de 120 kB a 250 KB

uses clipbrd, jpeg;

Function BmpToJpg(cImage: String):Boolean;
// Converte um arquivo BMP em JPEG
var
  MyJPEG : TJPEGImage;
  MyBMP  : TBitmap;
begin
Result := False;
if fileExists(cImage+'.bmp') then
   begin
   MyBMP := TBitmap.Create;
   with MyBMP do
        begin
        try
           LoadFromFile(cImage+'.bmp');
           MyJPEG := TJPEGImage.Create;
           with MyJPEG do
                begin
                Assign(MyBMP);
                SaveToFile(cImage+'.jpeg');
                Free;
                Result := True;
                end;
        finally
           Free;
        end;
        end;
   end;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
  if Clipboard.HasFormat(CF_BITMAP) then
     Image1.Picture.Assign(Clipboard);

  Image1.Picture.savetofile('c:\imagem.bmp');

  BMPtoJPG('c:\imagem');

end;

OBS: Depois que a imagem bmp for convertida voce pode deleta-la ... voce ainda pode dar uma incrementada usando o SavePictureDialog1 para poder salvar em uma pasta escolhida com o nome que quizer.

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Boa tarde Jhonas, obrigado pela resposta,

mas o que acontece é que na linha

Image1.Picture.savetofile('c:\imagem.bmp');

ele faz que salva mas não salva, ele cria o arquivo C:\Imagem.bmp mas se você localizar o arquivo e tentar abrir

ele diz que a imagem é invalida. então quando vai converter diz que o bitmap é invalido.

Atenciosamente,

Rodrigo

Link para o comentário
Compartilhar em outros sites

  • 0

Este é o seu código

if Clipboard.HasFormat(CF_PICTURE) then begin

Image1.Picture.Assign(Clipboard);

este é o que te passei

if Clipboard.HasFormat(CF_BITMAP) then

Image1.Picture.Assign(Clipboard);

percebeu o motivo do erro ?

abraço

Link para o comentário
Compartilhar em outros sites

  • 0
Este é o seu código

if Clipboard.HasFormat(CF_PICTURE) then begin

Image1.Picture.Assign(Clipboard);

este é o que te passei

if Clipboard.HasFormat(CF_BITMAP) then

Image1.Picture.Assign(Clipboard);

percebeu o motivo do erro ?

abraço

Boa Noite Jhonas,

Desculpa a Demora na Resposta,

Mas ainda continua o mesmo problema com a alteração sugerida

Bitmap is not valid na hora de salvar.

At.

Rodrigo

Link para o comentário
Compartilhar em outros sites

  • 0

Use o codigo do jeito que está que funciona

uses clipbrd, jpeg;

Function BmpToJpg(cImage: String):Boolean;
// Converte um arquivo BMP em JPEG
var
  MyJPEG : TJPEGImage;
  MyBMP  : TBitmap;
begin
Result := False;
if fileExists(cImage+'.bmp') then
   begin
   MyBMP := TBitmap.Create;
   with MyBMP do
        begin
        try
           LoadFromFile(cImage+'.bmp');
           MyJPEG := TJPEGImage.Create;
           with MyJPEG do
                begin
                Assign(MyBMP);
                SaveToFile(cImage+'.jpeg');
                Free;
                Result := True;
                end;
        finally
           Free;
        end;
        end;
   end;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
  if Clipboard.HasFormat(CF_BITMAP) then
     Image1.Picture.Assign(Clipboard);

  Image1.Picture.savetofile('c:\imagem.bmp');

  BMPtoJPG('c:\imagem');

end;

abraço

Link para o comentário
Compartilhar em outros sites

  • 0
Use o codigo do jeito que está que funciona

uses clipbrd, jpeg;

Function BmpToJpg(cImage: String):Boolean;
// Converte um arquivo BMP em JPEG
var
  MyJPEG : TJPEGImage;
  MyBMP  : TBitmap;
begin
Result := False;
if fileExists(cImage+'.bmp') then
   begin
   MyBMP := TBitmap.Create;
   with MyBMP do
        begin
        try
           LoadFromFile(cImage+'.bmp');
           MyJPEG := TJPEGImage.Create;
           with MyJPEG do
                begin
                Assign(MyBMP);
                SaveToFile(cImage+'.jpeg');
                Free;
                Result := True;
                end;
        finally
           Free;
        end;
        end;
   end;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
  if Clipboard.HasFormat(CF_BITMAP) then
     Image1.Picture.Assign(Clipboard);

  Image1.Picture.savetofile('c:\imagem.bmp');

  BMPtoJPG('c:\imagem');

end;

abraço

Bom dia Jhonas,

Descobri onde estava o erro.

if Clipboard.HasFormat(CF_BITMAP) then

Image1.Picture.Assign(Clipboard); // assim da erro...

if Clipboard.HasFormat(CF_BITMAP) then

Image1.Picture.Bitmap.Assign(Clipboard); // assim ta tudo certo.

Agora parece tão simples...hhehehe

Obrigado pela coloboração

AT.

Rodrigo

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...