Avatar billede snowball Novice
14. juni 2000 - 20:55 Der er 6 kommentarer og
1 løsning

JPEGImage.Scale

Nu syntes jeg snart jeg har prøvet ALT, men det virker stadig ikke !

Hvem kan hurtigt lige gi' mig et eksempel på hvordan ovennævnte virker ???

Snowball
Avatar billede speedy Nybegynder
15. juni 2000 - 09:37 #1
Du kan ikke bruge JPEGImage.Scale til at skalere et JPEG med. Det er noget med at du kan få at vide hvilken scalering den er vist i. Men hvad ved jeg ;-)

Hvis jeg ikke husker meget galt, er det dig der laver det der med screenshot. Ik ?

Der kan jeg huske at du har billedet i en bitmap først. Der kan du oprette en tmpBitmap, og sætte højden og bredden til hvad den skal være, og du skal også lave en TRect, og den skal du på samme måde indstille, så den passer til det nye billede.

Så kan du jo stretchdraw på tmpBitmappens canvas.

function SkalerBitmap(StorBitmap: TBitmap): TBitmap;
var
  tmpBitmap: TBitmap;
  tmpRect: TRect;
begin
  tmpBitmap.Width := 512;
  tmpBitmap.Height := 384;
  tmpRect.Top := 0;
  tmpRect.Left := 0;
  tmpRect.Bottom := 384;
  tmpRect.Right := 512;
 
  tmpBitmap.Canvas.StretchDraw(tmpRect, StorBitmap);
  Result := tmpBitmap;
end;
Avatar billede snowball Novice
15. juni 2000 - 09:45 #2
hhmmm...Så vidt jeg lige kan se, så er din kode det samme som du tidligere skrev, og det virkede ikke rigtigt alligevel.

Kan du ikke lige prøve og kæde din kode sammen med det der er svaret i http://www.eksperten.dk/spm.asp?id=19064 ???

Det der var galt sidste gang, var ikke at den ikke fik lavet billedet mindre, for der gjorde den fint, men billedet blev bare "lavet" så Delphi brokkede sig når jeg ville bruge billedet i en anden applikation !

Snowball
Avatar billede speedy Nybegynder
15. juni 2000 - 10:15 #3
Hej igen.

Jeg håber altså jeg har forstået det rigtigt. Du vil have at det screenshot der bliver taget bliver halveret. Er det ikke sandt ?

Jeg prøver lige at sammenkode det her så.

procedure TForm1.Button2Click(Sender: TObject);
var
  BitmapImage, tmpBitmap : TBitmap;
  JPEGImage : TJPEGImage;
  tmpRect: TRect;
begin
BitmapImage := ScreenCapture();
JpegImage := TJPEGImage.Create;
Try
  tmpBitmap.Width := BitmapBillede.Width div 2;
  tmpBitmap.Height := BitmapBillede.Height div 2;
  tmpBitmap.Canvas.StretchDraw(tmpRect);
//  Disse to linier jeg har udkommenteret herunder, skal du ikke gøre. Fordi den ikke resizer billedet. Den gør kun det du kan se mindre.
//  BitmapImage.Width := BitmapImage.Width div 2;
//  BitmapImage.Height := BitmapImage.Height div 2;

  JPEGImage.Assign(tmpBitmap);
//  JPEGImage.Assign(BitmapImage);
  Image1.Picture.Assign(JPEGImage);
  JpegImage.SaveTofile('Tmp.JPEG');
Finally
  JPEGImage.Free;
  BitMapImage.Free;
end;
ShellExecute(handle,'open','Tmp.JPEG',',',SW_NORMAL);
end;

Håber det hjælper.


/SpEeDy
Avatar billede snowball Novice
15. juni 2000 - 11:19 #4
hhhmmm...det virker da hverken helt eller halvt !

Har du ikke mulighed for at teste det ???

Snowball
Avatar billede speedy Nybegynder
15. juni 2000 - 12:04 #5
Nej, jeg var ikke på min egen computer da jeg skrev før, men er nu kommet hjem. Nu har jeg testet det i Delphi og det følgende virker!

procedure TForm1.Button2Click(Sender: TObject);
var
  BitmapImage, tmpBitmap : TBitmap;
  JPEGImage : TJPEGImage;
  tmpRect: TRect;
begin
  BitmapImage := ScreenCapture();
  JpegImage := TJPEGImage.Create;
  tmpBitmap := TBitmap.Create;

  tmpRect.Left := 0;
  tmpRect.Top := 0;
  tmpRect.Bottom := BitmapImage.Height div 2;
  tmpRect.Right := BitmapImage.Width div 2;

  tmpBitmap.Width := BitmapImage.Width div 2;
  tmpBitmap.Height := BitmapImage.Height div 2;
  tmpBitmap.Canvas.StretchDraw(tmpRect, BitmapImage);

Try
//  Disse to linier jeg har udkommenteret herunder, skal du ikke gøre. Fordi den ikke resizer billedet. Den gør kun det du kan se mindre.
//  BitmapImage.Width := BitmapImage.Width div 2;
//  BitmapImage.Height := BitmapImage.Height div 2;

  JPEGImage.Assign(tmpBitmap);
//  JPEGImage.Assign(BitmapImage);
  Image1.Picture.Assign(JPEGImage);
  JpegImage.SaveTofile('Tmp.JPEG');
Finally
  JPEGImage.Free;
  BitMapImage.Free;
  tmpBitmap.Free;
end;
ShellExecute(handle,'open','Tmp.JPEG','','',SW_NORMAL);
end;


Håber du kan bruge det denne gang ;-)

/SpEeDy
Avatar billede snowball Novice
15. juni 2000 - 12:16 #6
Kanon...Endelig virker det som det skal. Tak ;)

Snowball
Avatar billede speedy Nybegynder
15. juni 2000 - 13:44 #7
Det var så lidt. Det er ikke altid lige let, når man ikke har Delphi ved hånden.

/SpEeDy
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester