PureBoard
http://forums.purebasic.com/german/

#Image Objektnummer ist sehr hoch
http://forums.purebasic.com/german/viewtopic.php?f=3&t=31565
Seite 1 von 1

Autor:  kevv [ 05.07.2019 02:14 ]
Betreff des Beitrags:  #Image Objektnummer ist sehr hoch

Hallo
kriege ne meldung
[ERROR] #Image Objektnummer ist sehr hoch (über 100000), sind Sie dazu sicher?

weiß jemand warum ?



Code:


DataSection
  Logo:
  IncludeBinary #PB_Compiler_Home + "Examples\Sources\Data\PureBasicLogo.bmp"
EndDataSection

image = CreateImage(#PB_Any, 390, 80)
If IsImage(image)
  CatchImage(image, ?Logo)
EndIf


; CreateImage(0, 390, 80)
; Debug IsImage(0)

OpenWindow(0, 0, 0, 320, 240, name$, #PB_Window_ScreenCentered|#PB_Window_SystemMenu)
ImageGadget(0, 0, 0, 400, 90, ImageID(image))

Repeat
Until WaitWindowEvent(1) = #PB_Event_CloseWindow




Autor:  Demivec [ 05.07.2019 03:18 ]
Betreff des Beitrags:  Re: #Image Objektnummer ist sehr hoch

Von #PB_Any generierte IDs sollten nicht wie konstante IDs wiederverwendet werden.

Ersetzen Sie diesen Code:
Code:
image = CreateImage (#PB_Any, 390, 80)
If IsImage (image)
  CatchImage (image,? Logo)
EndIf


zu diesem Code:
Code:
image  = CatchImage(#PB_Any, ?Logo)
If IsImage (image) = 0
   ;fehler
EndIf

Autor:  kevv [ 06.07.2019 13:37 ]
Betreff des Beitrags:  Re: #Image Objektnummer ist sehr hoch

Und was hab ich jetzt schon wieder falsch gemacht ?


Code:

UseJPEGImageEncoder()

Procedure img_buffer()
 
  image = CreateImage(#PB_Any, 320, 240)
 
  If StartDrawing(ImageOutput(image)) 
    Box(0, 0, 320, 240, RGB(255, 100, 255))
    StopDrawing()
  EndIf
  *puffer = EncodeImage(image , #PB_ImagePlugin_JPEG)
  FreeImage(image)
 
  ProcedureReturn *puffer
EndProcedure



*img = img_buffer()

image2 = CatchImage(#PB_Any, *img)
If IsImage(image2) = 0
  Debug "error" :End
EndIf



OpenWindow(0, 0, 0, 300, 300, name$, #PB_Window_ScreenCentered|#PB_Window_SystemMenu)
ImageGadget(0, 0, 0, 400, 90, ImageID(image3))

Repeat
Until WaitWindowEvent(1) = #PB_Event_CloseWindow



Autor:  Mijikai [ 06.07.2019 13:52 ]
Betreff des Beitrags:  Re: #Image Objektnummer ist sehr hoch

kevv hat geschrieben:
Und was hab ich jetzt schon wieder falsch gemacht ?


...


Decoder fehlt :>

Code:
UseJPEGImageEncoder()
UseJPEGImageDecoder()

Procedure img_buffer()
 
  image = CreateImage(#PB_Any, 320, 240)
 
  If StartDrawing(ImageOutput(image)) 
    Box(0, 0, 320, 240, RGB(255, 100, 255))
    StopDrawing()
  EndIf
  *puffer = EncodeImage(image , #PB_ImagePlugin_JPEG)
  FreeImage(image)
 
  ProcedureReturn *puffer
EndProcedure



*img = img_buffer()

image2 = CatchImage(#PB_Any, *img)
If IsImage(image2) = 0
  Debug "error" :End
EndIf



OpenWindow(0, 0, 0, 300, 300, name$, #PB_Window_ScreenCentered|#PB_Window_SystemMenu)
ImageGadget(0, 0, 0, 400, 90, ImageID(image2))

Repeat
Until WaitWindowEvent(1) = #PB_Event_CloseWindow

Autor:  kevv [ 06.07.2019 14:12 ]
Betreff des Beitrags:  Re: #Image Objektnummer ist sehr hoch

:allright:

warum wird das den nicht automatisch includiert sobald man die function EncodeImage benutzt ?

Autor:  STARGÅTE [ 06.07.2019 14:40 ]
Betreff des Beitrags:  Re: #Image Objektnummer ist sehr hoch

Weil der Compiler nicht weiß welches Format zu benötigst und für das Standard-Format (*.bmp) kein Encoder gebraucht wird.
Die Encoder verbrauche Speicher in der finalen Exe, sodass der Einsatz vom Nutzer selbst entschieden werden kann.

Seite 1 von 1 Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/