AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Auf Pixel mit Pointer zugreifen
Thema durchsuchen
Ansicht
Themen-Optionen

Auf Pixel mit Pointer zugreifen

Ein Thema von vbinsider · begonnen am 27. Mai 2004 · letzter Beitrag vom 2. Jun 2004
Antwort Antwort
vbinsider

Registriert seit: 26. Dez 2003
Ort: Würselen
11 Beiträge
 
Delphi 7 Professional
 
#1

Auf Pixel mit Pointer zugreifen

  Alt 27. Mai 2004, 19:17
Hi Leute,

ich möchte mit der Scanline-Eigenschaft auf die einzelnen Pixel eines Bitmaps zugreifen. Ich hab dazu den folgenden Quellcode verwendet

Delphi-Quellcode:
var BMPData : TBitmap;
    BMPPixel : PRGBArray;
    Written : Boolean;
    x,y : integer;
begin

.
.
.

  BMPData.LoadFromFile(BMPFile); // BMPFile wird vorher mit einem OpenDialog eingelesen
  BMPData.PixelFormat:= pf24Bit;

.
.
.

  Written:= True;
  for y:= 0 to BMPData.Height-1 do
  begin
    BMPPixel:= BMPData.ScanLine[y];
    for x:= 0 to BMPData.Width-1 do
    begin
      If Written Then
      begin
        Pixel.Red:= BMPPixel^[x].rgbtRed;
        Pixel.Green:= BMPPixel^[x].rgbtGreen;
        Pixel.Blue:= BMPPixel^[x].rgbtBlue;

        Pixel.count:= 1;
        Written:= False;
      end

.
.
.
Aber sobald ich versuche, auf das Array BMPPixel zuzugreifen, kriege ich einen Speicherzugriffsfehler.

Bitte helft mir!

mfg
vbinsider
Ein Atomkrieg am Morgen kann einem den ganzen Tag versauen.
  Mit Zitat antworten Zitat
NeoXX
(Gast)

n/a Beiträge
 
#2

Re: Auf Pixel mit Pointer zugreifen

  Alt 27. Mai 2004, 20:54
Dies habe ich bei einem Programm benutzt das Screenshots machen, diese verkleinern und dann speichern soll.
Als Anhang ein Auszug aus dem Code.

Ich hoffe es hilft Dir weiter...
Angehängte Dateien
Dateityp: pas stretch.pas (4,1 KB, 15x aufgerufen)
  Mit Zitat antworten Zitat
vbinsider

Registriert seit: 26. Dez 2003
Ort: Würselen
11 Beiträge
 
Delphi 7 Professional
 
#3

Re: Auf Pixel mit Pointer zugreifen

  Alt 27. Mai 2004, 21:09
Erstmal danke für deinen Code.

Aber du ermittelst ja nur Zeiger auf drei der Zeilen. Alles weitere verschwindet in
Antialiasing_4x().

Vielleicht erkläre ich erstmal, was ich überhaupt vorhabe: Mein Programm soll eine BMP-Datei einlesen, Pixel für Pixel mit ScanLine und Pointern. Die Farbwerte sollen zur späteren Weiterverwendung in einem FileStream gespeichert werden und zwar mittels eines Records.

Ungefähr so:

Delphi-Quellcode:
type TPixelData = packed record
      Red,Green,Blue : Byte;
      Count : Integer;
end;

// später dann
var RecFile : TFileStream;
    Bit : TBitmap;

begin
  Bit:= TBitmap.Create;
  Bit.LoadFromFile('c:\test.bmp');
  RecFile:= TFileStream.Create('c:\blub2.dat',fmOpenWrite);

  // Hier soll dann der Code zum Einlesen stehen

  RecFile.Free;
  Bit.Free;
end;
Im Prinzip will ich dann eine Datei haben, in der diese Records stehen. Dann wird mit diesen Records gerechnet und später soll aus den Informationen in den Records wieder ein Bitmap konstruiert werden, das müsste eigentlich auch mit ScanLine gehen.

Die Frage ist: Wie??

Hoffe, dass ihr jetzt wisst, was ich überhaupt meine.

mfg
vbinsider
Ein Atomkrieg am Morgen kann einem den ganzen Tag versauen.
  Mit Zitat antworten Zitat
NeoXX
(Gast)

n/a Beiträge
 
#4

Re: Auf Pixel mit Pointer zugreifen

  Alt 29. Mai 2004, 18:30
So, das dürfte Dir aber jetzt helfen ... hoffe ich
Angehängte Dateien
Dateityp: zip bitmtostream.zip (158,6 KB, 24x aufgerufen)
  Mit Zitat antworten Zitat
vbinsider

Registriert seit: 26. Dez 2003
Ort: Würselen
11 Beiträge
 
Delphi 7 Professional
 
#5

Re: Auf Pixel mit Pointer zugreifen

  Alt 2. Jun 2004, 17:28
Danke, das war genau das, was ich suchte.
Ein Atomkrieg am Morgen kann einem den ganzen Tag versauen.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:56 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz