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

(Resolvido) Salvar Imagem


Aleksander

Pergunta

Olá, no código abaixo ao clicar no botão ele captura a tela e grava como Imagem.jpg, mas se eu clicar novamento no botão ele ira gravar novamente sobre o arquivo que foi gravado.

Pergunto então, como devo fazer para que o programa reconheça que o arquivo já existe e acrescente úm número no nome do novo arquivo para evitar que ele sobrescreva o arquivo existente?

Um abraço a todos. :)

---------------------------------------------------------

procedure TForm1.Button1Click(Sender: TObject);
var bitmap : tbitmap;
  jpg : tjpegimage;
  dc : hdc;
  desktoprect : trect;
  desktopcanvas : tcanvas;
  x, y : integer;
  yy, xx: integer;

begin
  dc:=getdc(getdesktopwindow);
  try
    desktopcanvas:=tcanvas.create;
    bitmap:=tbitmap.create;
    jpg:=tjpegimage.create;
    try
      bitmap.Width:=300;
      bitmap.Height:=300;
      desktopcanvas.handle:=dc;
      desktoprect:=rect(0,0,300,300);
      bitmap.canvas.CopyRect(desktoprect,desktopcanvas,desktoprect);
      image1.Picture.Bitmap:=bitmap;

      for y:=yy to yy+10 do
        for x:=xx to xx+10 do
          image1.canvas.pixels[x,y]:=clwhite;

      with jpg do
      begin
        compressionquality:=50;
        assign(bitmap);
        compress;
        savetofile('C:\Imagem.jpg');  <------------ eis a questão  :blink: 
      end;
    finally
      bitmap.free;
      desktopcanvas.free;
    end;
  finally
    releasedc(getdesktopwindow,dc);
  end;
end;

Editado por Micheus
Incluída tag's CODE para melhorar a visualização. Utilize a identação também ;)
Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Opa

Segue abaixo o código adaptado conforme sua necessidade...

procedure TForm1.Button1Click(Sender: TObject);
var
  bitmap : tbitmap;
  jpg : tjpegimage;
  dc : hdc;
  desktoprect : trect;
  desktopcanvas : tcanvas;
  x, y : integer;
  yy, xx: integer;

Function GetFileName: String;
var
  szPath: String;
  i: Integer;
begin
  szPath := 'C:\';
  i := 1;
  Result := szPath + 'screenshot.jpg';
  if FileExists(Result) then
  begin
    while (FileExists(szPath + 'screenshot(' + IntToStr(i) + ').jpg')) do
    Inc(i, 1);
    Result := szPath + 'screenshot(' + IntToStr(i) + ').jpg';
  end;
end;

begin
  dc:=getdc(getdesktopwindow);
  try
    desktopcanvas:=tcanvas.create;
    bitmap:=tbitmap.create;
    jpg:=tjpegimage.create;
    try
      bitmap.Width:=300;
      bitmap.Height:=300;
      desktopcanvas.handle:=dc;
      desktoprect:=rect(0,0,300,300);
      bitmap.canvas.CopyRect(desktoprect,desktopcanvas,desktoprect);
      image1.Picture.Bitmap:=bitmap;

      for y:=yy to yy+10 do
        for x:=xx to xx+10 do
          image1.canvas.pixels[x,y]:=clwhite;

      with jpg do
      begin
        compressionquality:=50;
        assign(bitmap);
        compress;
        savetofile(GetFileName);
      end;
    finally
      bitmap.free;
      desktopcanvas.free;
    end;
  finally
    releasedc(getdesktopwindow,dc);
  end;
end;

Ao salvar é chamado a função GetFileName que vai retornar o nome do arquivo...

em szPath coloque o caminho que você quer que as imagens sejam salvas...

deixei pra salvar no C:\

o nome das imagens salvas eu deixei como ScreenShot...

abraços

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,2k
×
×
  • Criar Novo...