OpBitmap mit Formaten Version 1.0

Zur Vorstellung von Komponenten und Units für Lazarus
Antworten
Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Re: OpBitmap mit Formaten Version 1.0

Beitrag von theo »

Habe keine Probleme mit
Lazarus 1.1 r40260:41998M FPC 2.7.1 x86_64-linux-gtk 2

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: OpBitmap mit Formaten Version 1.0

Beitrag von pluto »

Ich habe hier amd, kann es daran liegen? Ich werde es noch mal mit einem komplett neuen Projekt versuchen, vielleicht liegt es ja nur am Projekt selbst und gar nicht direkt an OpBitmap.

Edit01: Ich habe eine neuere Lazarus Version. Letzten erst habe ich die SVN Version geupdatet, vielleicht kann es daran liegen?
MFG
Michael Springwald

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Re: OpBitmap mit Formaten Version 1.0

Beitrag von theo »

Naja, hat ja mit dem Parser zu tun. Vllt. Abhängig vom Modus (objfpc, delphi...).
Ist ja aber kein Ding, dann löschst du halt das Auskommentierte und gut ist.

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: OpBitmap mit Formaten Version 1.0

Beitrag von pluto »

Aber das ist ja nicht alles. Soll ich auch die ganzen ASM Blöcke löschen? Ich denke, die haben schon ein Grund, das es die gibt.
MFG
Michael Springwald

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Re: OpBitmap mit Formaten Version 1.0

Beitrag von theo »

Ich weiss nicht was du machst, aber wenn du wie empfohlen opbitmapforlazcompat.lpk verwendest, ist da kein ASM.

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: OpBitmap mit Formaten Version 1.0

Beitrag von pluto »

Ich verwende es ohne es zu Installieren, einfach nur die Units.

Ich glaube ich werde einen anderen Weg gehen.... Eine Lib muss man meiner Meinung auch verwenden können ohne sie in Lazarus Direkt Installieren zu müssen.... ich meine das ging auch bei OpBitmap... oder täusche ich mich da?
MFG
Michael Springwald

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Re: OpBitmap mit Formaten Version 1.0

Beitrag von theo »

pluto hat geschrieben:oder täusche ich mich da?


Ja.

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: OpBitmap mit Formaten Version 1.0

Beitrag von pluto »

OK! Dann Probiere ich das mal aus....

Aber mich wundert dann, wenn man es Installiert, das dann wahrscheinlich die Fehler Meldungen von FPC verschwunden sind. Kann mir nicht vorstellen, dass es da einen Zusammenhang gibt, wenn er beim Kompilieren einige Units nicht finden würde, ok, aber bei sowas?

Aber ich weiß schon, warum ich inzwischen ungere Fremd LIBS verwende... Nichts gegen dich oder dein Projekt....
MFG
Michael Springwald

MitjaStachowiak
Lazarusforum e. V.
Beiträge: 394
Registriert: Sa 15. Mai 2010, 13:46
CPU-Target: 64 bit
Kontaktdaten:

Memory Leak

Beitrag von MitjaStachowiak »

Hy, habe ein Memory-Leak entdeckt, jpegencoder.pas, Zeilen 681 und 682 müssen auskommentiert bzw. gelöscht werden, da der gleicher Aufruf weiter unten schon steht:

Code: Alles auswählen

For ii := Low (image_components) To High (image_components) Do
    image_components [ii] := TJpegEncoderComponent.Create ;

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Re: Memory Leak

Beitrag von theo »

MitjaStachowiak hat geschrieben:Hy, habe ein Memory-Leak entdeckt, jpegencoder.pas, Zeilen 681 und 682 müssen auskommentiert bzw. gelöscht werden, da der gleicher Aufruf weiter unten schon steht:

Code: Alles auswählen

For ii := Low (image_components) To High (image_components) Do
    image_components [ii] := TJpegEncoderComponent.Create ;


Danke. Ich schaue mir das bei Gelegenheit mal an.

MitjaStachowiak
Lazarusforum e. V.
Beiträge: 394
Registriert: Sa 15. Mai 2010, 13:46
CPU-Target: 64 bit
Kontaktdaten:

Re: OpBitmap mit Formaten Version 1.0

Beitrag von MitjaStachowiak »

Hy, habe noch was gefunden:
Ich habe ein Bild aufgenommen, bei dem TPicture.LoadFromFile immer abschmiert. Es passiert nur bei diesem Bild (bzw. einigen wenigen Bildern von meinem Fotoapparat); Verkleinern mit Paint hilft nicht, Exif entfernen schon. Auch Projekte, die kein OPBitmap verwenden, haben kein Problem. Offenbar interferiert OPBitmap mit der Graphics-Unit von Lazarus, jedenfalls in meinem aktuellen Projekt.

Ich bin der Sache dann nach gegangen und habe schließlich in der opbitmapformats.pas die Procedure MianoProgressMulitPass wie folgt ergänzt:

Code: Alles auswählen

procedure MianoProgressMulitPass(code: TBitmapImageCoder; adata: PROGRESSDATA;
  currentpass: Cardinal; passcount: Cardinal; description: string;
  progress: Cardinal; var cancel: Boolean);
var Rec: TRect;
  progr: Cardinal;
begin
  if progress <> oldprogress then
  begin
    if (passcount = 0) then progr := 0  // msta: hier Null-Check
    else progr := Round((currentpass - 1) / passcount * 100 + (progress / passcount));
    TOPBitmap(Adata).OPProgress(TOPBitmap(Adata), opsRunning, progr, true, Rec, description);
    oldprogress := progress;
  end;
end;

Jetzt dud's.

Da ich TPicture nur zum laden verwende, dachte ich mit, ich kann doch auch TJPEGImage direkt benutzen. Habe folgendes Versucht:

Code: Alles auswählen

 jpg := TJPEGImage.Create;
 jpg.LoadFromFile(Source);
 Original.Assign(jpg);    // Original ist ein TCanvasOPBitmap
 jpg.Free;

Aber das Resultat ist irgendwie halbtransparent/gestreift/komisch...
Was mache ich hier falsch?
Dateianhänge
Verkleinerung des Bildes, das zum Fehler führt.
Verkleinerung des Bildes, das zum Fehler führt.
DSC00003.jpg (33.36 KiB) 4235 mal betrachtet

MitjaStachowiak
Lazarusforum e. V.
Beiträge: 394
Registriert: Sa 15. Mai 2010, 13:46
CPU-Target: 64 bit
Kontaktdaten:

Re: OpBitmap mit Formaten Version 1.0

Beitrag von MitjaStachowiak »

Hmm, TJPEGImage hat offenbar noch mehr Probleme. Ich habe jetzt die Unit FPReadJPEG so umgebogen, dass sie OPBitmaps einliest (Anhang). Das ist 3 Mal so schnell:

Code: Alles auswählen

 
uses JPEGtoOPBitmap, OPBitmap;
// ...
var
 op : TCanvasOPBitmap;
 jpg : TJPEGReader;
 mStr : TMemoryStream;
 fStr : TFileStream;
// ...
 fStr := TFileStream.Create(_Source, fmOpenRead);
 mStr := TMemoryStream.Create;
 mStr.LoadFromStream(fStr);
 fStr.Free;
 op := TCanvasOPBitmap.Create;
 jpg := TJPEGReader.Create;
 jpg.ReadToOPBitmap(mStr, op);
 jpg.Free;
 mStr.Free;
Dateianhänge
ColorTools.pas
Ein paar Farb-Definitionen
(3.01 KiB) 219-mal heruntergeladen
jpegtoopbitmap.pas
JPEG to OPBitmap
(10.61 KiB) 217-mal heruntergeladen

Antworten