ImageEncoder für TIFF bzw. TGA?
Verfasst: 21.07.2008 23:54
Ich habe gerade ein kleinen "Foto Verkleinerer" geschrieben er unterstützt
jpg, jpeg, jpe, png, und bmp und ich würde auch gerne TGA und TIFF (und auch andere Bildformate) unterstützen aber es gibt diese zwei Befehle (UseTGAImageEncoder(), UseTIFFImageEncoder()) leider nicht.
Gibt es da eine Alternative (wie z.B. Userlib) oder muss ich einfach warten bis bei einer neuen PureBasic Version so ein Encoder enthalten ist?
Und kann ich ein Bild mit Alphachannel vergrößern/-kleinern (wieso gibt es den Befehl ResizeAplhaImage() nicht?
)
Falls mal wer was ähnliches basteln will, hier mal mein Code (Verbesserungsvorschläge sind erwünscht):
MfG Tompazi
jpg, jpeg, jpe, png, und bmp und ich würde auch gerne TGA und TIFF (und auch andere Bildformate) unterstützen aber es gibt diese zwei Befehle (UseTGAImageEncoder(), UseTIFFImageEncoder()) leider nicht.
Gibt es da eine Alternative (wie z.B. Userlib) oder muss ich einfach warten bis bei einer neuen PureBasic Version so ein Encoder enthalten ist?
Und kann ich ein Bild mit Alphachannel vergrößern/-kleinern (wieso gibt es den Befehl ResizeAplhaImage() nicht?

Falls mal wer was ähnliches basteln will, hier mal mein Code (Verbesserungsvorschläge sind erwünscht):
Code: Alles auswählen
;; 21 Juli 2008 von Tompazi
If OpenWindow(0,0,0,120,250,"Foto Verkleinerer",#PB_Window_MinimizeGadget | #PB_Window_ScreenCentered )
CreateGadgetList(WindowID(0))
CreateToolBar(0,WindowID(0))
ToolBarStandardButton(0, #PB_ToolBarIcon_Open)
ToolBarToolTip(0, 0, "Foto laden")
ButtonGadget (1,10,220,100,20,"Verkleinern")
CheckBoxGadget(3, 10, 30, 100, 20, "Kanten Glätten")
SetGadgetState(3,1)
TextGadget (4, 10, 60, 100, 40,"Qualität (nur JPG, JPE und JPEG)", #PB_Text_Center)
TrackBarGadget(5,10,100,100,20,0,10,#PB_TrackBar_Ticks)
SetGadgetState(5,10)
TextGadget (6, 10, 120, 100, 20,Str(Qualitaet), #PB_Text_Center)
TextGadget (7, 10, 150, 100, 20,"Verkleinerung", #PB_Text_Center)
TrackBarGadget(8,10,170,100,20,1,100)
SetGadgetState(8,50)
TextGadget (9, 10, 190, 100, 20,Str(Verkleinerung) + "%", #PB_Text_Center)
UseJPEGImageDecoder()
UseTGAImageDecoder()
UsePNGImageDecoder()
UseTIFFImageDecoder()
UseJPEGImageEncoder()
UsePNGImageEncoder()
Repeat
Kanten = GetGadgetState(3)
Qualitaet = GetGadgetState(5)
Verkleinerung = GetGadgetState(8)
SetGadgetText(6,Str(Qualitaet))
SetGadgetText(9,Str(Verkleinerung) + "%")
Event = WaitWindowEvent()
Select Event
Case #PB_Event_Menu
Select EventMenu()
Case 0
Foto$ = OpenFileRequester("Wähle ein Foto:","%USERPROFILE%\Pictures\","Fotos (*.jpg ; *.jpeg; *.jpe; *.bmp ; *.png ; *.tga ; *.tiff ; *.tif) |*.jpeg;*.jpg;*.jpe;*.bmp;*.png;*.tga;*.tiff;*.tif",0)
If Foto$
LoadImage(0,Foto$)
EndIf
EndSelect
Case #PB_Event_Gadget
Select EventGadget()
Case 1
If Foto$
Breite.w = ImageWidth(0) / (100 / Verkleinerung)
Hoehe.w = ImageHeight(0) / (100 / Verkleinerung)
If Kanten = 1
ResizeImage(0,Breite.w, Hoehe.w)
ElseIf Kanten = 0
ResizeImage(0,Breite.w, Hoehe.w, #PB_Image_Raw)
EndIf
Speichern$ = SaveFileRequester("Verkleinertes Foto Speichern..",Foto$,"Fotos (*.jpg ; *.jpeg; *.jpe ; *.bmp ; *.png) |*.jpeg;*.jpg;*.jpe;*.bmp;*.png",0)
If Speichern$
Endung$ = GetExtensionPart(Speichern$)
If Endung$ = "JPG" Or Endung$ = "JPEG" Or Endung$ = "jpg" Or Endung$ = "jpeg" Or Endung$ = "JPE" Or Endung$ = "jpe"
SaveImage(0,Speichern$,#PB_ImagePlugin_JPEG,Qualitaet)
ElseIf Endung$ = "png"Or Endung$ = "PNG"
SaveImage(0,Speichern$,#PB_ImagePlugin_PNG)
Else
SaveImage(0,Speichern$,#PB_ImagePlugin_BMP)
EndIf
EndIf
EndIf
EndSelect
EndSelect
Until Event = #PB_Event_CloseWindow
EndIf