14. oktober 2003 - 08:23Der er
1 kommentar og 1 løsning
Thumbnail af jpg
Jeg er ved at lave et program som skal kunne lave Thumbnails i str 50x50.. Jeg bruger et TJPEGImage som loader et billede og så vil jeg så gerne kunne lave og gemme et thumbnail af dette... hvordan gør jeg det?
I lang tid har samarbejdsbranchen fokuseret på at forbedre enhedsfunktioner – bedre kameraer, klarere lyd og smartere software. Men den virkelige forvandling handler ikke om funktioner.
procedure CreateThumbnail(InStream, OutStream: TStream; Width, Height: Integer; Compress: Boolean; ProgressEvent : TProgressEvent); overload; var JpegImage: TJpegImage; Bitmap: TBitmap; Ratio: Double; ARect: TRect; AHeight (*, AHeightOffset*): Integer; AWidth (*, AWidthOffset*): Integer; begin // Check for invalid parameters JpegImage := TJpegImage.Create; try // Load the image JpegImage.LoadFromStream(InStream); if Width = 0 then Width := JpegImage.Width; if Height = 0 then Height := JpegImage.Height;
// Create bitmap, and calculate parameters Bitmap := TBitmap.Create; try Ratio := JpegImage.Width / JpegImage.Height; if Ratio > 1 then begin AHeight := Round(Width / Ratio); // AHeightOffset:=(Height-AHeight) div 2; AWidth := Width; // AWidthOffset:=0; end else begin AWidth := Round(Height * Ratio); // AWidthOffset:=(Width-AWidth) div 2; AHeight := Height; // AHeightOffset:=0; end;
Bitmap.Width := AWidth; Bitmap.Height := AHeight; // Bitmap.Canvas.Brush.Color:=FillColor; // Bitmap.Canvas.FillRect(Rect(0,0,Width,Height)); // StretchDraw original image // ARect:=Rect(AWidthOffset,AHeightOffset,AWidth+AWidthOffset,AHeight+AHeightOffset); ARect := Rect(0, 0, AWidth, AHeight); Bitmap.Canvas.StretchDraw(ARect, JpegImage); // Assign back to the Jpeg, and save to the file JpegImage.Free;
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.