hatte probleme mit dem performaten laden grösserer bilder (von kameras, so 3000x2000 pixel, ca. 3mb) was immer mind. 2 sekunden dauerte. habe dann aufgrund dieses forenposts:
http://lazarus.freepascal.org/index.php?topic=13429.0" onclick="window.open(this.href);return false;
meinen code auf die verwendung von den fpc-imagereadern umgestellt. im beispiel einer .jpg-datei sieht das ganze dann so aus:
Code: Alles auswählen
myImage := TFPMemoryImage.create(0, 0);
myImgReader := TFPReaderJPEG.Create;
myImage.UsePalette := False;
myImgReader.Performance:=jpBestSpeed;
myImgReader.Scale:=jsEighth;
myImage.LoadFromFile(sDateiname, myImgReader);
imgBildvorschau.Picture.Assign(myImage);
myImage.Free;
myImgReader.Free;
kommen nur die verkleinerten werte. auf die idee diese werte mit dem divisor, welcher in myImgReader.Scale benutzt wurde(hier

das dürfte aber nur mit bildern funktionieren, welche exakt durch 8 bzw. den entsprechenden divisor teilbar sind. bei z.b. ungraden breiten stimmen die errechneten angaben
auf keinen fall mit den echten überein.
gibt es irgenteinen weg, die echten bilddimensionen zu ermitteln, ohne den geschwindigkeitsvorteil wieder zu verlieren? und kann ich das ganze dann auch mit .png, .gif und all den anderen bildformaten machen?
edit:
irgentwie scheint das ganze (beschleunigtes laden) nur mit der jpeg-reader klasse zu funktionieren, nicht aber mit den anderen readern(png, bmp, gif).
gibt es irgenteine lösung, unter lazarus ein bild schnell in ein image-objekt zu laden und gleichzeitig die echten bilddimensionen zu erfahren?