Rodrigao Postado Maio 8, 2009 Denunciar Share Postado Maio 8, 2009 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 exemploele da a seguinte mensagem de erro "Bitmap is not valid".Se alguém puder me ajudar...AgradecidoRodrigo Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Maio 8, 2009 Denunciar Share Postado Maio 8, 2009 No meu sistema eu carrego essa imagem selecionada assim:if Clipboard.HasFormat(CF_PICTURE) then beginImage1.Picture.Assign(Clipboard);A imagem carrega no TImage mas quando eu dou o comando Image1.Picture.savetofile('c:\imagem1.bmp'); por exemploele 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 jpga 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Rodrigao Postado Maio 8, 2009 Autor Denunciar Share Postado Maio 8, 2009 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 abrirele diz que a imagem é invalida. então quando vai converter diz que o bitmap é invalido.Atenciosamente,Rodrigo Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Maio 8, 2009 Denunciar Share Postado Maio 8, 2009 Este é o seu códigoif Clipboard.HasFormat(CF_PICTURE) then beginImage1.Picture.Assign(Clipboard);este é o que te passeiif Clipboard.HasFormat(CF_BITMAP) thenImage1.Picture.Assign(Clipboard);percebeu o motivo do erro ?abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Rodrigao Postado Maio 13, 2009 Autor Denunciar Share Postado Maio 13, 2009 Este é o seu códigoif Clipboard.HasFormat(CF_PICTURE) then beginImage1.Picture.Assign(Clipboard);este é o que te passeiif Clipboard.HasFormat(CF_BITMAP) thenImage1.Picture.Assign(Clipboard);percebeu o motivo do erro ?abraçoBoa Noite Jhonas,Desculpa a Demora na Resposta,Mas ainda continua o mesmo problema com a alteração sugeridaBitmap is not valid na hora de salvar.At.Rodrigo Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Maio 14, 2009 Denunciar Share Postado Maio 14, 2009 Use o codigo do jeito que está que funcionauses 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Rodrigao Postado Maio 14, 2009 Autor Denunciar Share Postado Maio 14, 2009 Use o codigo do jeito que está que funcionauses 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çoBom 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...hheheheObrigado pela coloboraçãoAT.Rodrigo Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Rodrigao
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
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.