14. december 2004 - 09:53Der er
8 kommentarer og 1 løsning
Gemme udsnit af JPG billede i TImage
Hej,
Der står jo en hel masse om billeder her på eksperten, men jeg kan ikke finde lige netop det jeg skal bruge.
Jeg har en TImage som indeholder et JPG-billede, og af dette vil jeg gerne gemme et udsnit. Jeg kender koordinatorne for udsnittet - men mangler koden til hvordan jeg gemmer udsnittet. Udsnittet skal gemmes som jpg-fil selvfølgelig ;-)
På "efg's Computer Lab" kan du finde algoritmer/beskrivelse til en lang række ting, heribland en sektion om billeder (jeg vil tro at du der kan finde det du søger):
Du burde ikke få alle pointene da du ikke linkede til noget konkret, men det hjalp mig da på vej ;-)
Jeg kan klippe i en TBitmap nu, men der er intet der hedder Canvas i en TJpegImage, så koden virker ikke umiddelbart til JPG filer... men måske man skal convertere før man klipper?
Så lad os sige at jeg fik 30 point for linket, og de sidste 30 point for den "opdragende effekt" det havde at du selv kunne finde helt konkret det du havde brug for ;-)
procedure TForm1.Button1Click(Sender: TObject); begin if OpenPictureDialog1.Execute then //Åbn et billede begin LoadedImage.LoadFromFile(OpenPictureDialog1.FileName); //Indlæs billede fra fil LoadedImage.PixelFormat := pf24Bit; //Sæt PixelFormat til 24 bit Image1.Picture.Graphic := LoadedImage; //Vis det indlæste billede på formen end; end;
procedure TForm1.Button2Click(Sender: TObject); begin SaveImageBMP.Width := 65; //Billedet der gemmes bliver 65 pixel bred SaveImageBMP.Height := 65; //Billedet der gemmes bliver 65 pixel høj SaveImageBMP.Canvas.CopyRect(Rect(0, 0, SaveImageBMP.width, SaveImageBMP.Height), LoadedImage.Canvas, Rect(0, 0, 65, 65)); //Kopier området fra 0,0 til 65,65 SaveImageBMP.SaveToFile('d:\test.bmp'); //Gem BMP-filen SaveImageJPG.Assign(SaveImageBMP); //"Konverter" fra BMP til JPG SaveImageJPG.CompressionQuality := StrToInt(Edit1.Text); //Sæt kompressionskvalitet SaveImageJPG.Compress; //Tving komprimering SaveImageJPG.SaveToFile('d:\test.jpg'); //Gem som JPG-fil end;
Ej sjok, jeg har lige fundet ud af at hvis man skal indlæse et JPG-billede, klippe i det (crop hedder det på engelsk) og gemme det igen, så skal det efter det er indlæst, "konverteres" til BMP, kopiere det man vil klippe ud til en anden BMP og til sidst konverteres til JPG og gemmes. Puha. Dvs. der skal være 2 TBitmap og 2 TJpegImage hvis jeg har ret.
"This library is primarily designed to load images as background (buttons, forms, toolbars) and textures (DirectX, OpenGL) or for image browsing and editing purposes as long as you don't need to save images."
Og jeg har jo netop brug for at gemme billedet ;-)
Ja deri har du da ganske ret (ser jeg nu), jeg har tidliger brugt den i forbindlese med load af billeder. pt. bruger jeg et Library der LEADTOOLS det kan alt med hensyn til billeder men det koster en bundegård (and then some)
Synes godt om
Ny brugerNybegynder
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.