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

Image, Como Saber Formato (extensão) Da Picture.


schaukoski

Pergunta

Olá ...

Estou tendo alguns problemas com isto.

Eu tenho um opendialog na minha aplicação, aonde eu importo imagens do computador para meu componente "image2".

Em seguida, eu dou image2.picture.savetofile, e salvo como .BMP...

Aí está o problema, porquê, eu aceito JPEG, e JPG, se eu salvar como .bmp uma imagem jpeg , não irá abrir

posteriormente...

Eu preciso que abra JPEG e JPG e BMP, colocar filtro no open dialog não seria útil.

Seria necessário saber, a extensão da imagem que está no meu image2, para salvá-la ( através de condição ) se ela é bmp, ou jpeg, jpg...

Obrigado!

Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 0

Cara, só adapta ele pro seu código, é que eu to meio corrido aqui na empresa... qualquer dúvida escrevi ai que eu respondo...

$ext = explode(".",$_FILES["foto"]["name"]);

# explode tem a função de separar a string pelo caracter informado, no exemplo ".")

# $_FILES serve para buscar arquivos

$ext = $ext[sizeof($ext)-1];

# sizeof pega o tamanho no vetor

echo $ext;

Link para o comentário
Compartilhar em outros sites

  • 0

Isso... é que no meu caso eu recebia ela de um form e quebrava pra verificar a extensão, pois também tinha o mesmo problema que você, só aceitava .jpg.... A diferença é que eu recebia ela do usuario, você vai ter que "abrir" ela ai pra verificar a extensão... Se você não conseguir, posta seu código ai que fica mais fácil de te ajudar ok... abraços

Link para o comentário
Compartilhar em outros sites

  • 0

OK Renato.

eu tenho 3 possibilidades de formatos, JPG, JPEG e BMP.

eu tenho meu componente image2 no form, e tenho tambem o openpicturedialog, que é aonde eu busco a imagem e trago para o image2.

até ai tudo bem, ele procura a imagem desejada, da OK, a imagem aparece la no image2, e na hora de salvar que é o problema, porque eu não sei qual extensão que veio, podem ser uma das 3 formatos possíveis(jpeg, jpg bmp).

o valor da extensao vai ficar em uma variável? isso que eu não intendi do seu código...

tem como voce fazer um exemplo , com meu componente image2?

Link para o comentário
Compartilhar em outros sites

  • 0

opa

eheh de começo achei que fosse PHP, pelo post do

Renato...

Seguinte, no OpenPictureDialog que você fica sabendo

o tipo de imagem exemplo:

var

extensao: String;

begin

if OpenPictureDialog.Execute then

begin

extensao := ExtractFileExt(OpenPictureDialog.Filename);

e na hora de salvar só você fazer

image2.Picture.SaveToFile('c:\fichario\foto\'+dbedit1.text+ extensao);

Talvez seja necessário colocar a variavel que armazena a

extensão como global e não na rotina em si já que pra

carregar e salvar são duas rotinas diferentes...

abs

Link para o comentário
Compartilhar em outros sites

  • 0

schaukoski, você vai sempre gravar no formato bmp?

Por acaso tem algo a ver com o seu outro post. Voce está transformando em BMP para gravar no blob ou disco?

Se for, e você estiver fazendo o resize da figura (transformando em thumbnail), então veja esta adaptação que fiz daquela função MakeThumbNail2 (eu a renomeei aqui):

procedure MakeThumbNail(aSource :TGraphic; aDest: TBitmap; iWidth, iHeight: Integer);
var
  Escala :Double;
begin
  aDest.Width := iWidth;
  aDest.Height := iHeight;

 // Esta parte é utilizada para manter a proporção, sem que
 // o maior dos lados ultrapasse a maior medida informada (acho que está 100%)
  Escala := aSource.Width /aSource.Height;
  if (iWidth *Escala) > iHeight then
    aDest.Height := Round(iHeight /Escala)
  else
    if (iHeight /Escala) > iWidth then
      aDest.Width := Round(iWidth *Escala);

 // Desenha a imagem no tamanho calculado
  aDest.Canvas.StretchDraw(Rect(0, 0, aDest.Width, aDest.Height), aSource);
end;

// Carrega imagem para visualização em Image1
procedure TForm1.BtnLoadClick(Sender: TObject);
begin
 // Lê qualquer tipo de imagem permitido
  if OpenPictureDialog1.Execute then
    Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
end;

// Grava imagem visualizada no Image1 para um arquivo bmp (reduzido)
procedure TForm1.BtnSaveClick(Sender: TObject);
var
  BmpDst :TBitmap;
begin
 // Verifica se há uma imagem carregada
  if Assigned(Image1.Picture.Graphic) then
  begin
   // Cria bitmap destino a ser utilizado na gravação
    BmpDst := TBitmap.Create;
    try
     // Transforma a imagem carregada (qualquer tipo) em um thumbnail BMP
      MakeThumbNail(Image1.Picture.Graphic, BmpDst, 100, 100);
         // *** Opção para gravar em arquivo ou na base de dados ***
     // 1) Grava a imagem no formato BMP
      BmpDst.SaveToFile('c:\fichario\foto\'+dbedit1.text+'.bmp');

     // 2) Grava a imagem no formato BMP num campo da tabela
          DBImage1.Picture.Assign(BmpDst);

     // Limpa o Image1
      Image1.Picture.Assign(nil);
    finally
      BmpDst.Free;
    end;
  end;
end;

Ao utilizar como origem (aSource) um TGraphic, não precisamos nos preocupar com que tipo de imagem ela é.

Abraços

Editado por Micheus
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,3k
×
×
  • Criar Novo...