TIFF Dateien Speichern? Laden größer 9000x6000 Pixel?

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Xaby
Beiträge: 2144
Registriert: 12.11.2005 11:29
Wohnort: Berlin + Zehdenick
Kontaktdaten:

TIFF Dateien Speichern? Laden größer 9000x6000 Pixel?

Beitrag von Xaby »

Ich hatte mir ein Tool geschrieben, was leider nicht gemacht hat, was es sollte. Ich habe in mehreren Unterornden TIFF-Dateien, die zum größten Teil Schwarzweiß-Zeichnungen enthalten.

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")
Das betrifft ca. 200 Dateien.

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.

:?
Kinder an die Macht http://scratch.mit.edu/
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

Hinweis: Die Bildgröße ist derzeit auf 8192x8192 Pixel (sofern der verfügbare Speicher dies ermöglicht) limitiert.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Xaby
Beiträge: 2144
Registriert: 12.11.2005 11:29
Wohnort: Berlin + Zehdenick
Kontaktdaten:

Beitrag von Xaby »

@Kaeru Gaman

Vielen Dank für den Hinweis. :? Manchmal weiß ich nicht, ob du solche Hinweis ernst meinst oder wirklich denkst, dass ich sie nicht gelesen habe.

Ich unterstelle dir keine Absicht, aber was meinst du, wieso ich hier frage?

Es geht ja genau drum, etwas zu machen, was eigentlich nicht geht.

>>>>>>>>>>>>>>>>>>>>>>>>>>

Ich glaube auch, dass TIFFs mit mehreren Seiten nicht dargestellt werden können. Und wenn, wüsste ich nicht, wie ich alle Seiten sehen kann.

Die Limitierung auch bei den #Sprites ist mir bekannt.

Aber was soll ich da als Fotograf zu sagen :cry:
Oder auch als Grafiker, oder Zeichner. Da irgendwie jede Firma ihr eigenes System für Zeichnungen benutzt: diverse CAD-Versionen, PDF, TIFF ...

wollte ich einfach alle in ein Format konvertieren und sie dann archivieren.

Den Wunsch, dass JPEG-Dateien schneller geladen werden können, den verkneife ich mir ja schon. Auch ein Grund, weshalb mein Bildbetrachter bis jetzt nur im Kopf existiert. Und auch mein eigenes "PhotoShop" wird wohl noch auf sich warten lassen. ...

Schade eigentlich, denn Paint.NET zeigt ja vielen, dass .NET "cool" ist.

Wir haben auch auch was:
http://www.jilocasin.de/index.php?optio ... &Itemid=64

Pixtix :allright: :allright: :allright:

Kommt aber auch mit größeren Bildern nicht klar :oops:

(und DLL-PlugIns sind wieder nicht für MacOS geeignet [die Plattform für Fotografen])
Kinder an die Macht http://scratch.mit.edu/
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

dann frage ich mich, warum du so eine frage im Anfgängerforum stellst.
dann solltest du besser eine Feature-Request im entsprechenden Abschnitt des Englischen Forums stellen.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Xaby
Beiträge: 2144
Registriert: 12.11.2005 11:29
Wohnort: Berlin + Zehdenick
Kontaktdaten:

Beitrag von Xaby »

@Kaeru Gaman
Haste ja Recht. Immer dieses Englisch /:->
Meine Wishlist :mrgreen:

:shock: :allright:
Kinder an die Macht http://scratch.mit.edu/
Benutzeravatar
ZeHa
Beiträge: 4760
Registriert: 15.09.2004 23:57
Wohnort: Friedrichshafen
Kontaktdaten:

Beitrag von ZeHa »

Mich würden mal die Gründe für diese Begrenzung interessieren, zumal manchmal sogar größere Bilder erfolgreich geladen werden können, und manchmal auch nicht.

Kann sein daß ich das schonmal irgendwo gefragt hab aber wenn dann hab ich die Antwort vergessen :mrgreen:
Bild     Bild

ZeHa hat bisher kein Danke erhalten.
Klicke hier, wenn Du wissen möchtest, woran ihm das vorbeigeht.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

8192² x 32bit = 256MB...
hat vielleicht irgendwas mit ner internen speicherverwaltung zu tun...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Xaby
Beiträge: 2144
Registriert: 12.11.2005 11:29
Wohnort: Berlin + Zehdenick
Kontaktdaten:

Beitrag von Xaby »

@ZeHa

das ist einfach: Es wäre sonst zu schön um wahr zu sein :|
Kinder an die Macht http://scratch.mit.edu/
Benutzeravatar
ZeHa
Beiträge: 4760
Registriert: 15.09.2004 23:57
Wohnort: Friedrichshafen
Kontaktdaten:

Beitrag von ZeHa »

Okay das leuchtet ein, vielleicht hat das mit dem Paging zu tun oder so... keine Ahnung.

Aber manchmal werden bei mir selbst Bilder mit 4000x3000 oder ähnlichen Größen nicht geladen... das finde ich auch seltsam.
Bild     Bild

ZeHa hat bisher kein Danke erhalten.
Klicke hier, wenn Du wissen möchtest, woran ihm das vorbeigeht.
Benutzeravatar
Xaby
Beiträge: 2144
Registriert: 12.11.2005 11:29
Wohnort: Berlin + Zehdenick
Kontaktdaten:

Beitrag von Xaby »

@256 MB

Ich glaube nicht, dass es unter Windows mit dem Paging zu tun hat.
Sollte es nicht so sein, dass das Betriebssystem den Speicher verwaltet.

Also der Prozessor seine 40 Bit Adressleitung hat und ich damit trilliaden an Speicherbytes ansprechen kann und ich dem Betriebssystem nur noch sagen muss, wie viel Speicher ich gern hätte.

So ganz verstehe ich auch nicht, wieso behauptet wird, dass 32 Bit Systeme nur etwas über 3 GByte RAM ansprechen können.

Also XP und Vista 32 Bit, aber die neuen Laptops alle mit 4 GB und Vista Home Premium angeboten werden. Und die ist mit Sicherheit nur 32 Bit.

Das würde den Umkehrschluss haben, dass auch mit XP mehr Speicher möglich sein müsste. Zu mal die ja das Rad nicht neu erfinden werden für Server und Heimrechner.

Und auch Computer mit 8 GByte RAM müssen ja irgendein Betriebssystem haben ...


Wie auch immer, ich glaube, dass das Betriebssystem den Speicher zur Verfügung stellt und wenn die Festplatte groß genug ist, der Virtuelle Speicher auf die Festplatte erweitert wird.

So dass ich auch Riesenbilder in den Speicherladen kann.

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

Was natürlich sein kann ist, dass es ein ähnliches Problem wie bei DOS mit den 64 KByte war, ist. :?

Und ich sag mal so, ein Sprite mit 8192 x 8192 wäre schon heftig.
Denn so viel RAM haben die Grafikkarten ja auch nicht.

Aber als #Image ...

Wie auch immer, freue mich auf "PureBasic +" :D
Kinder an die Macht http://scratch.mit.edu/
Antworten