Converter BMP para JPEG
Amigos, ja li varias mensagens e dicas de transformar bmp para jpeg. Muitas funcionam perfeitamente. Mas preciso de uma rotina que:
Mesmo transformando em JPEG, o arquivo deve diminiui consideralvemente.
Tipo:
tenhos 14.000 arquivos em bmp, com certa de 300kb cada um, eu executei as rotinas e dicas aqui citadas, a que compactou mais deixou os arquivos com 70kb cada um.
Baixei um programinha, que: esse mesmo arquivo de 300kb ele diminiu para 4 ou 5kb, com a mesma qualidade de que necessito.
Unico detalhe, esse programa solicita o tamanho da imagem, por padrao vem 150x150.
Via programa em delphi, alem de transformar bmp para jpg, como determinar tambem o tamanho da figura para que a mesma fique em torno desses 4 ou 5 kb?
Obrigado.
Mesmo transformando em JPEG, o arquivo deve diminiui consideralvemente.
Tipo:
tenhos 14.000 arquivos em bmp, com certa de 300kb cada um, eu executei as rotinas e dicas aqui citadas, a que compactou mais deixou os arquivos com 70kb cada um.
Baixei um programinha, que: esse mesmo arquivo de 300kb ele diminiu para 4 ou 5kb, com a mesma qualidade de que necessito.
Unico detalhe, esse programa solicita o tamanho da imagem, por padrao vem 150x150.
Via programa em delphi, alem de transformar bmp para jpg, como determinar tambem o tamanho da figura para que a mesma fique em torno desses 4 ou 5 kb?
Obrigado.
Pedih
Curtidas 0
Respostas
Marcelo Saviski
30/11/2004
Tente mecher na JPEGImage:
[color=green:fe40445b87]JPG.CompressionQuality := [i:fe40445b87]{0..100}[/i:fe40445b87];[/color:fe40445b87]
GOSTEI 0
Dopi
30/11/2004
Esse código abaixo irá transformar qualquer Imagem lida pelo Delphi em um JPG de 300 x 250...
Eu uso ele para permitir o usuário capturar Imagens para Fotos de produtos.
O código faz referencia a alguns objetos e variaveis da Unit que ele está inserido, portanto é preciso adapata-lo às suas necessidades...
Para funcionar em CLX no Windows vc precisará da Unit : QJpegLoader escrita por: Andreas Hausladen ( http://unvclx.sourceforge.net )
Eu uso ele para permitir o usuário capturar Imagens para Fotos de produtos.
O código faz referencia a alguns objetos e variaveis da Unit que ele está inserido, portanto é preciso adapata-lo às suas necessidades...
procedure TfrProdutos.aLerFotoExecute(Sender: TObject); var ImgLoad, ImgReduc : TBitmap ; Rect : TRect ; CodBarras : String ; begin CodBarras := dsCadastro.DataSet.FieldByName(´CODBARRAS´).AsString ; if CodBarras = ´´ then raise Exception.Create(´Esse produto não possui Cod.Barras´) ; ArqFoto := DirFotos + CodBarras + ´.jpg´ ; if OpenDialog1.Execute then begin ImgLoad := TBitmap.Create ; ImgReduc := TBitmap.Create ; try ImgLoad.LoadFromFile( OpenDialog1.FileName ) ; ImgReduc.Format := ´JPEG´ ; ImgReduc.Width := 300 ; ImgReduc.Height := 250 ; Rect.Left := 0 ; Rect.Top := 0 ; Rect.Right := 300 ; Rect.Bottom := 250 ; ImgReduc.Canvas.StretchDraw(Rect, ImgLoad ); ImgReduc.SaveToFile( ArqFoto ); iFoto.Picture.Assign( ImgReduc ); finally ImgLoad.Free ; ImgReduc.Free ; end ; end ; end;
Para funcionar em CLX no Windows vc precisará da Unit : QJpegLoader escrita por: Andreas Hausladen ( http://unvclx.sourceforge.net )
GOSTEI 0
Pedih
30/11/2004
Amigos, é o seguinte:
gero um relatorio, pelo fortes report.
nele, coloco 30 imagens, em formato .BMP.
no Momento em que as imagens vao para o relatorio, preciso trata-las.
tipo
procedure TfrmPrintOferta.RLDetailGrid1BeforePrint(Sender: TObject;
var PrintIt: Boolean);
begin
MinhaImagem (que é .BMP), se transforma para JPEG, reduzindo drasticamente seu tamanho.
quero que as imagens fique num tamanho de 4 ou 5 KB aproximadamente.
Ja testei algumas dicas, porem, o tamanho da imagem ainda fica grande.
(nao quero salvar as imagens). Mas existe uma opcao no Fortes Report de Salvar o Relatorio em HTML, ae que entra o detalhe de que as imagens devem estar pequenas (em RUNTIME apenas).
agradeco a todos> pedih_rp@yahoo.com.br
no aguardo.
end;
gero um relatorio, pelo fortes report.
nele, coloco 30 imagens, em formato .BMP.
no Momento em que as imagens vao para o relatorio, preciso trata-las.
tipo
procedure TfrmPrintOferta.RLDetailGrid1BeforePrint(Sender: TObject;
var PrintIt: Boolean);
begin
MinhaImagem (que é .BMP), se transforma para JPEG, reduzindo drasticamente seu tamanho.
quero que as imagens fique num tamanho de 4 ou 5 KB aproximadamente.
Ja testei algumas dicas, porem, o tamanho da imagem ainda fica grande.
(nao quero salvar as imagens). Mas existe uma opcao no Fortes Report de Salvar o Relatorio em HTML, ae que entra o detalhe de que as imagens devem estar pequenas (em RUNTIME apenas).
agradeco a todos> pedih_rp@yahoo.com.br
no aguardo.
end;
GOSTEI 0
Dopi
30/11/2004
O processo é o mesmo... No exemplo que citei a variavel ImgReduc é um image já reduzido. Vc pode salva-la ou transporta-la para outro componente usando Assign()
Veja essa instruçao:
iFoto.Picture.Assign( ImgReduc );
o TImage IFoto agora tem o conteudo de ImgReduc.
Veja essa instruçao:
iFoto.Picture.Assign( ImgReduc );
o TImage IFoto agora tem o conteudo de ImgReduc.
GOSTEI 0