Seite 1 von 1

Frage zu einem Programm aus dem CodeArchiv - Fehlermeldung

Verfasst: 22.09.2013 07:45
von moin
Hallo,
ich habe versucht ein einfaches Programm aus dem CodeArchiv zum laufen zu bekommen. Es bricht aber immer mit einer Fehlermeldung ab und ich kann den Fehler nicht finden. Vielleicht könnt ihr mir helfen.
Das Programm soll ein Bild laden und alles in Grauwerte umwandeln.
Leider bricht das Programm in der Zeile 39 (da wird der Befehlt point verwendet) mit dieser Fehlermeldung ab: [ERROR] Point() is outside the drawing area.

Diese Fehlermeldung verstehe ich nicht, da doch die Breite und Höhe vorher ermittelt worden ist.

Ich arbeite mit der Version 5.20 LTS (x86) und Windows 7 64 bit

Grüße Jörn

Code: Alles auswählen

; www.PureArea.net
; Author: DEU.exe (updated for PB4.00 by blbltheworm)
; Date: 13. December 2003
; OS: Windows
; Demo: Yes

;
; Konvertiert Bild in Graustufen 
; by DEU.exe, 13.12.03
;
; Einfachere (aber langsamere!) Alternative zu ChangeImageColorChannel.pb u.a.
; Dieser Code sollte einfach, für Anfänger durchschaubar und mit BASIC-Befehlen realisiert werden. 
;
;
; Hier kann man mit verschiedenen Werten experimentieren:
; z.B. rechnet das Zeichenprogramm Gimp mit: 
; 0,3/0,53/0,11 
; Eine etwas neutralere Angleichung ist:
; 0,4/0,3/0,3
; danach mit 100 multiplizieren: 
redlight=30 : greenlight=53 : bluelight=11

; total = RGB-lights, unterschiedliche Intensität der Farbanteile, zusammen 100:
total = redlight + greenlight + bluelight

; Testimage laden (muß vorhanden sein) & aktivieren:
LoadImage(1,"PureBasic.bmp") 

Debug "Höhe " + ImageHeight(1)
Debug "Breite " + ImageWidth(1)

StartDrawing(ImageOutput(1)) 

; Konvertieren Anfang: 
For y= 0 To ImageHeight(1) 
  For x= 0 To ImageWidth(1)

   ;Farbwert eines Punktes ermitteln:
   p=Point(x,y)

   ;jeden Farbkanal extra auslesen, mit Lichtanteilen multiplizieren, 
   ;Rot+Grün+Blau addieren und durch 'total' dividieren:
   grau=(Red(p)*redlight+Green(p)*greenlight+Blue(p)*bluelight) / total
   ;Punkt neuschreiben und jeden Kanal extra angeben: 
   Plot(x,y,RGB(grau,grau,grau))

   Next x 
Next y 
; Konvertieren Ende.

; Testimage speichern: 
StopDrawing() 
SaveImage(1,"Test1.bmp") 


; IDE Options = PureBasic v4.00 (Windows - x86)
; Folding = -
; DisableDebugger

Re: Frage zu einem Programm aus dem CodeArchiv - Fehlermeldu

Verfasst: 22.09.2013 07:54
von STARGÅTE
Ein Image, das eine Breite von "ImageWidth(1)" hat, hat nur Pixel von 0 bis ImageWidth(1)-1, das müsstest du in den beiden Schleifen ändern.

Re: Frage zu einem Programm aus dem CodeArchiv - Fehlermeldu

Verfasst: 22.09.2013 08:03
von moin
Vielen Dank, das hätte ich nicht so schnell gefunden.
Grüße Jörn