einige sind unkomprimiert und 16 MB groß. Wenn ich sie mit anderen Programmen "per Hand" als PNG speichere, dann werden sie ~ 300 bis 600 kByte groß.
Wenn ich sie mit PureBasic öffnen und speichern will, passiert entweder gar nichts, oder aber meine Dateien sind ebenfalls sehr groß.
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Wie sieht es mit weiteren ImagePlugIns für PureBasic aus?
Code: Alles auswählen
; Folker Linstedt
; 2008-07-09
; Kompression von Bildern
EnableExplicit
Procedure searchFiles(pfad.s, Liste.s(), typ.s="")
PathAddBackslash_(@pfad) ; Hängt Backslash an, falls nötig
Protected dir=ExamineDirectory(#PB_Any, pfad, ""), n
If dir
While NextDirectoryEntry(dir)
If DirectoryEntryType(dir) = #PB_DirectoryEntry_File
AddElement(Liste())
Liste()=pfad+DirectoryEntryName(dir)
ElseIf DirectoryEntryName(dir) <> "." And DirectoryEntryName(dir) <> ".."
searchFiles(pfad+DirectoryEntryName(dir), Liste(), typ)
EndIf
Wend
FinishDirectory(dir)
EndIf
EndProcedure
NewList FileList.s()
searchFiles("C:\Bilder\Große Daten\", FileList())
Procedure.l GetStringField(String$,SearchString$,Sep$=" ")
Protected result=0, i, Q=FindString(String$,Sep$,1)
If Q
For i=1 To Q
If StringField(String$,i,Sep$)=SearchString$
result=i
i=Q
EndIf
Next
EndIf
ProcedureReturn result
EndProcedure
Procedure.s NewEx(Name$,Ex$="png")
Protected E$=GetExtensionPart(Name$)
Name$=Left(Name$,Len(Name$)-Len(E$))+Ex$
ProcedureReturn Name$
EndProcedure
Define E$, ES$="tif tiff bmp"
Debug StrQ(CountList(FileList()))+" Dateien gefunden:"
UseTIFFImageDecoder()
UsePNGImageEncoder()
ForEach FileList()
E$=GetExtensionPart(FileList())
If GetStringField(ES$,E$)
If LoadImage(0,FileList())
SaveImage(0,NewEx(FileList()),#PB_ImagePlugin_PNG)
If FileSize(FileList()) < FileSize(NewEx(FileList()))
DeleteFile(FileList())
Else
DeleteFile(NewEx(FileList()))
EndIf
EndIf
EndIf
Next
MessageRequester("Fertig","Fertig")
Einige Dateien in den Ordnern werden nicht berücksichtigt.
Da einige TIFs kleiner sind, weil sie wohl LZH oder irgendwas anderes komprimiert sind, teste ich, ob die PNG oder die TIF größer ist, und lösche dann die größere.
Schade ist, dass ich bei PNG keine Kompression einstellen kann.
Vielleicht gibt es ja die Möglichkeit, einen Filter über ein Bild zu legen.
So dass man ein Image erst in 16 Farben Graustufen umwandelt und dieses dann als PNG komprimiert.
Wenn ich wenigstens 9000 x 6000 große Bilder laden könnte, könnte ich diese ja auch auf 3000 x 2000 mit ResizeImage() runterschrauben.
>>>>>>> Ich weiß, es gibt auch IrfanView, aber schön wäre es schon, wenn man sich seine eigenen Sachen programmieren könnte
Vielleicht setzten wir uns mal ran und programmieren ein paar ImagePlugIns, damit PureBasic was den Foto und Medienbereich angeht, wieder etwas konkurrenzfähiger wäre.
