Toon posts:

[Delphi] TImage resizen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Stel dat ik een een TImage heb met een plaatje van 150x120. Ik wil dit plaatje dan resizen naar resoluties van x^2 dus 64, 128, 256 etc.
Is er een methode om dit te doen, of moet ik dit de user zelf laten doen met een programma als PSP?

De dimensies hoeven niet hetzelfde te zijn(64x256 is gewoon toegestaan)

edit:

Niemand?

Verwijderd

image.width en image.height wijzigen.

Verwijderd

Topicstarter
Op woensdag 17 april 2002 18:27 schreef robh het volgende:
image.width en image.height wijzigen.
Dit laat gewoon een stukje van het plaatje zien, ik wil het "croppen" naar dimensies van ^2

Verwijderd

Het moet toch echt met width en height. Hieronder een stukje code hoe ik een JPG image verklein (of vergroot) naar een door de gebruiker opgegeven grootte.

Een kleine uitleg hoe het programma werkt. Je vult de hoogte en breedte in (bijv. 100 en 100) daarna open je een jpg image d.m.v. een standaard Opendialogbox. Hierna wordt de geselecteerde jpg image omgezet naar een nieuw jpg image met de nieuwe waarden.

Dit kan je ook doen bitmaps moet je de code wat aanpassen.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
uses JPEG;

procedure TForm1.btnReSizeClick(Sender: TObject);
var
  Jpeg1, Jpeg2: TJPEGImage;
  TempBitmap: TBitmap;
  CanvasRect: TRect;
begin
  if OpenPictureDialog1.Execute then
    begin
    edtFileName.Text := OpenPictureDialog1.FileName;

    // Create a Bitmap and two JPEG's
    TempBitmap := TBitmap.Create;
    Jpeg1 := TJPEGImage.Create;
    Jpeg2 := TJPEGImage.Create;
    try
      // Load the picture to shrink into the first Jpeg
      Jpeg1.LoadFromFile(OpenPictureDialog1.FileName);

      // Set the bitmap width to the new size
      TempBitmap.Width := StrToInt(edtBreedte.Text);
      TempBitmap.Height := StrToInt(edtHoogte.Text);

      // Create a TRect with the canvas co-ordinates
      CanvasRect := Rect(0, 0, TempBitmap.Width, TempBitmap.Height);

      // Draw the JPEG on the Canvas
      TempBitmap.Canvas.StretchDraw(CanvasRect, JPeg1);

      // Assign the bitmap to the second Jpeg
      Jpeg2.Assign(TempBitmap);

      // Save the second Jpeg in a renamed file
      Jpeg2.SaveToFile(ExtractFilePath(OpenPictureDialog1.FileName)+
        'Small '+ExtractFileName(OpenPictureDialog1.FileName));
    finally
      // Tidy up the stuff you created before leaving
      TempBitmap.Free;
      Jpeg1.Free;
      Jpeg2.Free;
    end;
    end;
end;