SaveImage - Problem

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Benutzeravatar
Ironsmurf
Beiträge: 111
Registriert: 04.01.2006 12:57
Computerausstattung: AMD FX(tm)-6300 Six-Core Processor
3.50 GHz / 8 GB Ram
Windows 7 / 64bit / Ultimate
Purebasic 5.20 LTS (Windows - x86)
Wohnort: Deutschland

SaveImage - Problem

Beitrag von Ironsmurf »

Hallo zusammen

ich möchte gerne ein Bild speichern, das laden und einfügen aus der Zwischenablage funktioniert,
jedoch funktioniert das speichern einfach nicht.
Mache bestimmt wieder einen Anfängerfehler.
Wäre nett wenn ich mir auf die Sprünge helfen könntet.

Vielen Dank im voraus

Code: Alles auswählen

UseJPEGImageDecoder()

Name$ = "D:\10000.jpg"

OpenWindow(0, #PB_Ignore, #PB_Ignore, 400, 440, "Bildviewer", #PB_Window_SystemMenu)

ImageGadget(0, 10, 10, 120, 180, 0, #PB_Image_Border); Erstelle Image 0
ImageGadget(1, 200, 200, 120, 180, 0, #PB_Image_Border); Erstelle Image 1
LoadImage(0, Name$); Lade Bild von HDD
ResizeImage(0, 96, 142); Ändere Bild auf die vorgegebene Größe
SetGadgetState(0, ImageID(0)); Gebe Bild zurück

Ergebnis = GetClipboardImage(1);Lade Bild aus Zwischenablage
If Ergebnis = 0 : Debug "nicht geladen" : EndIf; Falls Ergebnis = 0, Debug Meldung
ResizeImage(1, 96, 142); Ändere Bild auf die vorgegebene Größe
SetGadgetState(1, ImageID(1)); Gebe Bild zurück

Speichern_0$ = "D:\10000.jpg"
Speichern_1$ = "D:\10001.jpg"

Repeat
  Select WaitWindowEvent(); Beim Beenden des Programms speichern
    Case #PB_Event_CloseWindow
      
      Ergebnis1 = SaveImage(0, Speichern_0$, #PB_ImagePlugin_JPEG)
      Debug Ergebnis1
      
      Ergebnis2 = SaveImage(1, Speichern_1$, #PB_ImagePlugin_JPEG)
      Debug Ergebnis2
      
      Break
      
    Case #PB_Event_Gadget
      If EventGadget() = 1
      EndIf
      
  EndSelect
  
ForEver
Es kommt immer auf die Sichtweise des Betrachters an.
Benutzeravatar
KeyKon
Beiträge: 1412
Registriert: 10.09.2004 20:51
Computerausstattung: Laptop: i5 2,8 Ghz, 16GB DDR3 RAM, GeForce 555GT 2GB VRAM
PC: i7 4,3 Ghz, 32GB DDR3 RAM, GeForce 680 GTX 4GB VRAM
Win10 x64 Home/Prof
PB 5.30 (64bit)
Wohnort: Ansbach
Kontaktdaten:

Re: SaveImage - Problem

Beitrag von KeyKon »

UseJPEGImageEncoder() scheint mir zu fehlen...
(\/) (°,,,°) (\/)
Benutzeravatar
Chimorin
Beiträge: 451
Registriert: 30.01.2013 16:11
Computerausstattung: MSI GTX 660 OC mit TwinFrozr III
6Gb DDR 3 RAM
AMD Phenom II X4 B55 @ 3,6GHz
Windows 7 Home Premium 64-bit

Re: SaveImage - Problem

Beitrag von Chimorin »

Hey,
1. Benutze EnableExplicit !Immer!
2. Wenn du schon das Nichtladen eines Bildes abfängst, solltest du auch dafür sorgen, dass nichts passiert, wenn kein Bild da ist. Ein einfaches End zum Beenden des Programms reicht.
3. Der Code:

Code: Alles auswählen

EnableExplicit

UseJPEGImageEncoder()
UseJPEGImageDecoder()

Define.s Name$, Speichern_0$, Speichern_1$
Define.i Ergebnis, Ergebnis1, Ergebnis2

Name$ = "D:\1000.jpg"

OpenWindow(0, #PB_Ignore, #PB_Ignore, 400, 440, "Bildviewer", #PB_Window_SystemMenu)

ImageGadget(0, 10, 10, 120, 180, 0, #PB_Image_Border); Erstelle Image 0
ImageGadget(1, 200, 200, 120, 180, 0, #PB_Image_Border); Erstelle Image 1
Ergebnis = LoadImage(0, Name$); Lade Bild von HDD
If Not Ergebnis 
  Debug "bla"
  End
EndIf
ResizeImage(0, 96, 142); Ändere Bild auf die vorgegebene Größe
SetGadgetState(0, ImageID(0)); Gebe Bild zurück

Ergebnis = GetClipboardImage(1);Lade Bild aus Zwischenablage
If Ergebnis = 0 
  Debug "nicht geladen" 
  End
EndIf; Falls Ergebnis = 0, Debug Meldung
ResizeImage(1, 96, 142); Ändere Bild auf die vorgegebene Größe
SetGadgetState(1, ImageID(1)); Gebe Bild zurück

Speichern_0$ = "D:\10000.jpg"
Speichern_1$ = "D:\10001.jpg"

Repeat
  Select WaitWindowEvent(); Beim Beenden des Programms speichern
    Case #PB_Event_CloseWindow
      
      Ergebnis1 = SaveImage(0, Speichern_0$, #PB_ImagePlugin_JPEG)
      Debug Ergebnis1
      
      Ergebnis2 = SaveImage(1, Speichern_1$, #PB_ImagePlugin_JPEG)
      Debug Ergebnis2
      
      Break
      
    Case #PB_Event_Gadget
      If EventGadget() = 1
      EndIf
      
  EndSelect
  
ForEver
Bild

- formerly known as Bananenfreak -
Antworten