OpBitmap mit Formaten Version 1.0

Zur Vorstellung von Komponenten und Units für Lazarus

Re: OpBitmap mit Formaten Version 1.0

Beitragvon theo » 8. Jul 2013, 15:32 Re: OpBitmap mit Formaten Version 1.0

Habe keine Probleme mit
Lazarus 1.1 r40260:41998M FPC 2.7.1 x86_64-linux-gtk 2
theo
 
Beiträge: 8058
Registriert: 11. Sep 2006, 18:01

Beitragvon pluto » 8. Jul 2013, 18:02 Re: OpBitmap mit Formaten Version 1.0

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
Aktuelles Projekt: PlutoArduino
pluto
 
Beiträge: 6668
Registriert: 19. Nov 2006, 12:06
Wohnort: Oldenburg/Oldenburg
OS, Lazarus, FPC: Linux Mint 18.3 | 
CPU-Target: AMD
Nach oben

Beitragvon theo » 8. Jul 2013, 20:30 Re: OpBitmap mit Formaten Version 1.0

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.
theo
 
Beiträge: 8058
Registriert: 11. Sep 2006, 18:01

Beitragvon pluto » 8. Jul 2013, 20:34 Re: OpBitmap mit Formaten Version 1.0

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
Aktuelles Projekt: PlutoArduino
pluto
 
Beiträge: 6668
Registriert: 19. Nov 2006, 12:06
Wohnort: Oldenburg/Oldenburg
OS, Lazarus, FPC: Linux Mint 18.3 | 
CPU-Target: AMD
Nach oben

Beitragvon theo » 8. Jul 2013, 20:38 Re: OpBitmap mit Formaten Version 1.0

Ich weiss nicht was du machst, aber wenn du wie empfohlen opbitmapforlazcompat.lpk verwendest, ist da kein ASM.
theo
 
Beiträge: 8058
Registriert: 11. Sep 2006, 18:01

Beitragvon pluto » 8. Jul 2013, 21:05 Re: OpBitmap mit Formaten Version 1.0

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
Aktuelles Projekt: PlutoArduino
pluto
 
Beiträge: 6668
Registriert: 19. Nov 2006, 12:06
Wohnort: Oldenburg/Oldenburg
OS, Lazarus, FPC: Linux Mint 18.3 | 
CPU-Target: AMD
Nach oben

Beitragvon theo » 8. Jul 2013, 21:07 Re: OpBitmap mit Formaten Version 1.0

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


Ja.
theo
 
Beiträge: 8058
Registriert: 11. Sep 2006, 18:01

Beitragvon pluto » 8. Jul 2013, 22:03 Re: OpBitmap mit Formaten Version 1.0

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
Aktuelles Projekt: PlutoArduino
pluto
 
Beiträge: 6668
Registriert: 19. Nov 2006, 12:06
Wohnort: Oldenburg/Oldenburg
OS, Lazarus, FPC: Linux Mint 18.3 | 
CPU-Target: AMD
Nach oben

Beitragvon MitjaStachowiak » 9. Jul 2016, 12:14 Memory Leak

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 ;
MitjaStachowiak
 
Beiträge: 336
Registriert: 15. Mai 2010, 12:46
CPU-Target: 64 bit
Nach oben

Beitragvon theo » 9. Jul 2016, 16:25 Re: Memory Leak

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.
theo
 
Beiträge: 8058
Registriert: 11. Sep 2006, 18:01

Beitragvon MitjaStachowiak » 19. Jul 2016, 21:48 Re: OpBitmap mit Formaten Version 1.0

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?
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
MitjaStachowiak
 
Beiträge: 336
Registriert: 15. Mai 2010, 12:46
CPU-Target: 64 bit
Nach oben

Beitragvon MitjaStachowiak » 22. Jul 2016, 16:22 Re: OpBitmap mit Formaten Version 1.0

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;
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
MitjaStachowiak
 
Beiträge: 336
Registriert: 15. Mai 2010, 12:46
CPU-Target: 64 bit
Nach oben

• Themenende •
Vorherige

Zurück zu Units/Komponenten



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

porpoises-institution
accuracy-worried