Newsgroup: it.comp.lang.delphi
Titolo: Salvare Bmp/JPG

Devo salvare un immagine in formato 150x150 pixel jpg o bmp è uguale, avendo
in ingresso un immagine normale, in modo da creare un thumbnails "leggera"
Come faccio ?
Ho provato a caricare l'immagine sia in un TImage che in un TBitmap delle
dimensioni 150x150, ma quando provo a salvarla la salva sempre delle
dimensioni reali.
Ho provato anche a copiare il canvas su un altro TBitmap ma mi dice che non
posso modificare il tbitman finchè non ce nè uno già caricato dentro.
Avete idee ?
Ciao
Stefano Tampieri

 posso modificare il tbitman finchè non ce nè uno già caricato dentro.
Come lo hai copiato?
Hai provato con Assign?
Bye
AS
"Se è Microsoft non funziona"
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG




Avete idee ?
Supponendo di avere un TImage piazzato sul form e di
caricarci dentro la tua immagine, devi creare un nuovo
TImage e copiarci dentro il contenuto del form, non del
TImage di partenza, per cui il canvas da usare e' quello del
form:
procedure TForm1.Button1Click(Sender: TObject);
var
  ARect: TRect;
  BRect: TRect;
begin
  // TImage piazzato sul form
  with Image1 do
  begin
    Picture.LoadFromFile('C:\yourfile.bmp');
    Width := 150;
    Height := 150;
    Stretch := true;
    Update;
  end;
  // creazione rettangolo dell'area del form
  ARect := Rect(Image1.Left,
                Image1.Top,
                Image1.Left + Image1.Width,
                Image1.Top + Image1.Height);
  // rettangolo dell'area del nuovo TImage
  BRect := Rect(0, 0, 150, 150);
  // creazione al volo di un TImage
  with TImage.Create(Self) do
  begin
    Width := 150;
    Height := 150;
    Stretch := false;
    Canvas.CopyRect(BRect, Form1.Canvas, ARect);
    Picture.SaveToFile('C:\resized.bmp');
  end;
end;
-- 
Andrea Laforgia (
walkie...@libero.it
)
"Usenet is a strange place" [Dennis Ritchie]

 ha scritto nel messaggio
news:3c9d638b...@news.tin.it...


 Hai qualche soluzione ?
E' semplice: crea entrambe le TImage in modo dinamico.


 ha scritto nel messaggio
news:72079dec81290c55cac...@mygate.mailgate.org...


NO, è quello che già faccio ma mi da errore
Il codice che usi non va bene, perche' non puoi usare il
Canvas dell'immagine di partenza, come canvas sorgente, in
quanto e' legato alle dimensioni dell'immagine.
Devi usare, necessariamente, il Canvas del controllo che
contiene l'immagine.  Ho scritto la seguente funzione, che
non lavora bene se non si consente lo show del form:
procedure ResizeBmp(SourceFileName: String;
                    TargetFileName: String;
                    TargetWidth, TargetHeight: Word);
var
  ImageContainer: TForm;
  Image1, Image2: TImage;
  ARect, BRect: TRect;
begin
  ImageContainer := TForm.Create(nil);
  ImageContainer.Show;
  try
    ImageContainer.ClientWidth := TargetWidth*2;
    ImageContainer.ClientHeight := TargetHeight;
    Image1 := TImage.Create(ImageContainer);
    with Image1 do
    begin
      Parent := ImageContainer;
      Left := 0;
      Top := 0;
      Height := TargetHeight;
      Width := TargetWidth;
      Stretch := true;
      Picture.LoadFromFile(SourceFileName);
    end;
    ImageContainer.Update;
    ARect := Rect(0,
                  0,
                  TargetWidth-1,
                  TargetHeight-1);
    BRect := Rect(0,
                  0,
                  TargetWidth-1,
                  TargetHeight-1);
    Image2 := TImage.Create(ImageContainer);
    with Image2 do
    begin
      Parent := ImageContainer;
      Left := TargetWidth;
      Top := 0;
      Height := TargetHeight;
      Width := TargetWidth;
      Stretch := false;
      Canvas.CopyRect(BRect, ImageContainer.Canvas, ARect);
      Picture.SaveToFile(TargetFileName);
    end;
    ImageContainer.Update;
  finally
    ImageContainer.Close;
    ImageContainer.Free;


 non lavora bene se non si consente lo show del form:
... snip ...
aggiungo, cosa che può essere utile, che se sposti una form al di fuori 
delle coordinate del video, continua a funzionare anche se non la vedi.
Ad esempio:
FormFuoriCampo.Left := Screen.Width + 1;
// il trucco c'è, ma non si vede... :)
Ciao.
Mimmo.

 ha scritto nel messaggio
news:3C9B9E1...@zumzumzum.tin.it...
