Kann keine Pixel in Bitmaps schreiben

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
xnalpf
Beiträge: 43
Registriert: Di 4. Sep 2007, 15:43

Kann keine Pixel in Bitmaps schreiben

Beitrag von xnalpf »

Hab folgenden Code:

Code: Alles auswählen

procedure test;
 
var
  output:TBitmap;
 
begin
  output:=TBitmap.Create;
  output.LoadFromFile('/tmp/digits.bmp');
  output.Canvas.Pixels[0,0]:=0;
  output.SaveToFile('/tmp/test.bmp');
  output.Free;
end;


Bei output.Canvas.Pixels[0,0]:=0; gibts 'ne Exception. Was mach ich falsch?
Zuletzt geändert von monta am Fr 20. Feb 2009, 20:02, insgesamt 1-mal geändert.
Grund: Codetags gesetzt ([code=laz]...[/code])

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

Re: Kann keine Pixel in Bitmaps schreiben

Beitrag von theo »

Müsste eig. klappen.
Welches System, welche Laz. Version, welches Widgetset?
Evtl. mal das Source Bitmap anhängen.
Das ist aber keine Konsolen Anwendung?

xnalpf
Beiträge: 43
Registriert: Di 4. Sep 2007, 15:43

Re: Kann keine Pixel in Bitmaps schreiben

Beitrag von xnalpf »

theo hat geschrieben:Müsste eig. klappen.
Welches System, welche Laz. Version, welches Widgetset?
Evtl. mal das Source Bitmap anhängen.
Das ist aber keine Konsolen Anwendung?


Lazarus 0.9.26 unter SuSE 11 64 bit. Widgetset ist GTK. Und nein, es ist keine Konsolen-Anwendung. Es soll zwar eigentlich eine Konsolen-Anwendung werden um per script Grafiken zu manipulieren aber als Konsolen-Anwendung hab ich nicht mal Graphics einbinden können. Dazu wäre ein Tipp auch nicht schlecht. Oder gehen Konsolen-Anwendungen, die Grafiken bearbeiten nicht?

Edit: OK. Ich gestehe - ich hab versucht, eine Konsolenanwendung daraus zu machen indem ich Interfaces weggelassen habe (damit ich kein Display brauche). Also hatte ich kein Widget-Set also gab es eine Exception beim Zugriff auf Widget-Funktionen. Das ist natürlich schade, weil ich das Projekt zwar unter X-Windows problemlos laufen lassen kann, wenn ich Interfaces mit einkompiliere. Aber wenn ich es dann auf der Konsole laufen lasse meckert die Anwendung (mit Recht) über ein nicht erreichbares Display. Exportiere ich vorher ein erreichbares X-Display läuft die Anwendung auch auf der Konsole. Das ist nur nicht genau was ich will denn es geht ja um Batch-Jobs die dann z.B. per Cron gestartet werden. Da hab ich nicht immer enen X-Server laufen. Gibts da eine Lösung?

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

Re: Kann keine Pixel in Bitmaps schreiben

Beitrag von theo »

xnalpf hat geschrieben:Lazarus 0.9.26 unter SuSE 11 64 bit. Widgetset ist GTK.

Gut, auf 64 bit weiss ich nicht ob's Macken gibt. Aber auf 64 bit läuft noch einiges nicht oder nicht rund, nicht nur mit Lazarus.
Ich selber tu mir das nur zum testen an.

xnalpf hat geschrieben: Und nein, es ist keine Konsolen-Anwendung. Es soll zwar eigentlich eine Konsolen-Anwendung werden um per script Grafiken zu manipulieren aber als Konsolen-Anwendung hab ich nicht mal Graphics einbinden können. Dazu wäre ein Tipp auch nicht schlecht. Oder gehen Konsolen-Anwendungen, die Grafiken bearbeiten nicht?

Dazu eignet sich OpBitmap ganz gut. Alles in Memory, kein X-Server nötig.
64 bit Version gibt's auch seit kurzem (ganz unten in diesem Beitrag) viewtopic.php?p=4915#p4915
Ich weiss aber nicht genau, was du machen möchtest. Es hat nat. Grenzen, z.B. keine Fonts.
Wenn du das lpk installieren willst, nimm am besten die lazbridge raus, dann hast du keine Abhängigkeiten von der LCL.

P.S. wenn du's nur via Pfad einbinden willst, musst du für die 64bit Version dem Compiler noch -dOpbCompat übergeben
s.a. viewtopic.php?p=27732#p27732

xnalpf
Beiträge: 43
Registriert: Di 4. Sep 2007, 15:43

Re: Kann keine Pixel in Bitmaps schreiben

Beitrag von xnalpf »

theo hat geschrieben:Ich weiss aber nicht genau, was du machen möchtest.

Ich möchte eine Grafik laden, eine zweite im Speicher erstellen und dann entweder die ganze oder Teile der ersten Grafik in die zweite kopieren. Dann sollen natürlich auch Sachen wie Fonts funktionieren um noch was in die Zielgrafik reinzuschreiben, Pixel manipulieren, dehnen, stauchen - das volle Programm.
Wird mir also nix übrig bleiben, als immer einen Dummy-X-Server zu starten. (im schlimmsten Fall)
Was ist denn mit diesem NoGUI Widgetset? Braucht das einen X-Server und kann das alle Bitmap/Canvas-Operationen?

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

Re: Kann keine Pixel in Bitmaps schreiben

Beitrag von theo »

Soviel ich weiss sind Systemfonts ohne X nicht ohne weiteres möglich.
Man kann sich vllt. mit Bitmapfonts was basteln oder die libgd anzapfen (unit gd).
Da kenne ich mich aber nicht aus.

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: Kann keine Pixel in Bitmaps schreiben

Beitrag von pluto »

Bin gerade über diesen Link gestolpert:
http://wiki.lazarus.freepascal.org/Deve ... h_Graphics
MFG
Michael Springwald

xnalpf
Beiträge: 43
Registriert: Di 4. Sep 2007, 15:43

Re: Kann keine Pixel in Bitmaps schreiben

Beitrag von xnalpf »

pluto hat geschrieben:Bin gerade über diesen Link gestolpert:
http://wiki.lazarus.freepascal.org/Deve ... h_Graphics

Super! Der Abschnitt "Drawing without LCL" umfasst ja genau das, was ich brauche. Das werde ich gleich mal testen. Vielen Dank!

Antworten