Thumbnailmaker
Verfasst: 26.03.2005 19:17
Dieses kleineProgramm erstellt eine webseite mit einer Bidvorschau, die auf klick in einem neuen Fenster das Vollbild zeigt. Ich weiß nicht, ob das sehr beispielhaft ist, aber nützlich ist es.
include datei (include.pb):
Main datei (main.pb):
Naja, das mit den meheren dateien hat noch einen praktischen nutzen:
Ich hab nämlich nur die demo, da gehen nicht mehr als ca. 800 Zeilen... (tatsächlich ca. um die 650)
ups, kann das mal jemand nach Anwendungen verschieben?
include datei (include.pb):
Code: Alles auswählen
; PureBasic Visual Designer v3.90 build 1360
;- Window Constants
;
Enumeration
#Window_0
EndEnumeration
Global path.s
Global pics.w
Global Format.s
Global position.s
Global installpfad.s
Global farbe.l
Global textfarbe.l
;- MenuBar Constants
;
Enumeration
#MenuBar_0
EndEnumeration
;- Gadget Constants
;
Enumeration
#Text_1
#Text_2
#Frame3D_1
#Text_4
#Text_5
#Text_6
#Hoehe
#breite
#anderung
#select
#Text_7
#Text_8
#zeilen
#spalten
#Text_9
#titel
#Text_10
#Datei
#Text_12
#border
#vor
#nach
#erstellen
#clr1
#clr2
#format
#colour
#rahmen
#text_r
#pos_t
#pos1
#pos2
#pos3
#maxpics
#picsges
#warning
#pfad
#pfadwahl
#pfad_t
#info1
#info2
#progress
#fontfarbe
#bildtext
EndEnumeration
;- StatusBar Constants
;
Enumeration
#StatusBar_0
EndEnumeration
;- Fonts
;
Global FontID1
FontID1 = LoadFont(1, "DiagramTTHabsburg", 10)
Global FontID2
FontID2 = LoadFont(2, "Times New Roman", 10, #PB_Font_Bold)
Global FontID3
FontID3 = LoadFont(3, "Andy", 14, #PB_Font_Bold)
Procedure Open_Window_0()
If OpenWindow(#Window_0, 292, 176, 629, 341, #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_SizeGadget | #PB_Window_TitleBar , "Thumbnail maker")
If CreateMenu(#MenuBar_0, WindowID())
MenuTitle("")
EndIf
If CreateStatusBar(#StatusBar_0, WindowID())
EndIf
If CreateGadgetList(WindowID())
TextGadget(#Text_1, 230, 10, 120, 20, "BenpiccoSoft´s", #PB_Text_Center)
SetGadgetFont(#Text_1, FontID2)
TextGadget(#Text_2, 220, 30, 140, 20, "Thumbnail Maker", #PB_Text_Center)
SetGadgetFont(#Text_2, FontID3)
Frame3DGadget(#Frame3D_1, 200, 0, 170, 60, "")
TextGadget(#Text_4, 10, 10, 40, 20, "Höhe:")
TextGadget(#Text_5, 10, 30, 40, 20, "Breite:")
TextGadget(#Text_6, 10, 50, 50, 20, "Änderung:")
SpinGadget(#Hoehe, 40, 10, 50, 15, 1, 1024)
SpinGadget(#breite, 50, 30, 40, 15, 1, 768)
SpinGadget(#anderung, 70, 50, 40, 15, 0, 30)
ButtonGadget(#select, 460, 130, 100, 20, "Bildordner wählen")
ComboBoxGadget(#format,560,130,60,160, #PB_ComboBox_Editable)
TextGadget(#Text_7, 440, 10, 40, 20, "Zeilen:")
TextGadget(#Text_8, 440, 30, 40, 20, "Spalten:")
SpinGadget(#zeilen, 480, 10, 40, 15, 1, 1000)
SpinGadget(#spalten, 480, 30, 40, 15, 1, 100)
TextGadget(#Text_9, 450, 60, 30, 20, "Titel:")
StringGadget(#titel, 490, 60, 100, 20, "Bildvorschau")
TextGadget(#Text_10, 420, 90, 60, 20, "Dateiname:")
StringGadget(#Datei, 490, 90, 110, 20, "Bildvorschau.html")
TextGadget(#Text_12, 10, 70, 70, 20, "Rahmendicke:")
SpinGadget(#border, 80, 70, 50, 15, 0, 10)
EditorGadget(#vor, 30, 120, 190, 150)
SetGadgetText(#vor, "Hier können sie etwas Text eingeben, ")
AddGadgetItem(#vor,1, "der vor der Bildertabelle gezeigt " )
AddGadgetItem(#vor,2, "werden soll. Es kann sogar html sein.")
EditorGadget(#nach, 240, 120, 190, 150)
SetGadgetText(#nach, "Und hier können sie schreiben,")
AddGadgetItem(#nach,1," was später unter den Bildern steht.")
ButtonGadget(#erstellen, 460, 160, 110, 40, "Website erstellen!", #PB_Button_MultiLine)
TextGadget(#Text_2, 220, 30, 140, 20, "Thumbnail Maker", #PB_Text_Center)
SetGadgetFont(#Text_2, FontID3)
ButtonGadget(#clr1, 85,270,100,20,"löschen")
ButtonGadget(#clr2, 295,270,100,20,"löschen")
DisableGadget(#erstellen,1)
ButtonGadget(#colour, 10,90,90,20,"Hintergrundfarbe")
TextGadget(#text_r, 135,70,90,15,"Bilderrahmendicke")
SpinGadget(#rahmen, 223,70,50,15,0,10)
TextGadget(#pos_t,460,210,150,15,"tabellenausrichtung")
OptionGadget(#pos1,460,223,50,15,"rechts")
OptionGadget(#pos2,460,236,50,15,"mitte")
OptionGadget(#pos3,460,249,50,15,"links")
StringGadget(#maxpics,540,20,30,15,Str(4*3), #PB_String_ReadOnly|#PB_String_Numeric )
StringGadget(#picsges,580,20,30,15,"0",#PB_String_ReadOnly)
TextGadget(#warning, 530,37,100,20," ")
TextGadget(#pfad_t, 105,90,100,20,"Bitte Zielpfad wählen")
StringGadget(#pfad,210,90,120,20,"c:\")
ButtonGadget(#pfadwahl, 335,90,80,20,"Durchsuchen")
TextGadget(#info1, 540,8,30,15,"max")
TextGadget(#info2, 575,8,30,15,"total")
ProgressBarGadget(#progress, 80,295,300,10,0,200,#PB_ProgressBar_Smooth )
ButtonGadget(#fontfarbe, 280,68,80,20,"Textfarbe")
CheckBoxGadget(#bildtext, 460,264,90,15,"Text im Bild")
EndIf
EndIf
EndProcedure
Code: Alles auswählen
; PureBasic Visual Designer v3.90 build 1360
IncludeFile "include.pb"
Global verz.s
Open_Window_0()
format = "*.bmp"
AddGadgetItem(#format,-1, "*.bmp")
AddGadgetItem(#format,-1, "*.jpg")
AddGadgetItem(#format,-1, "*.png")
AddGadgetItem(#format,-1, "*.gif")
AddGadgetItem(#format,-1, "*.tga")
AddGadgetItem(#format,-1, "*.*")
SetGadgetState(#format,0)
SetGadgetState (#Hoehe,120) : SetGadgetText(#Hoehe,"120")
SetGadgetState (#Breite,220) : SetGadgetText(#Breite,"220")
SetGadgetState (#anderung,5) : SetGadgetText(#anderung,"5")
SetGadgetState (#border,0) : SetGadgetText(#border,"0")
SetGadgetState (#zeilen,4) : SetGadgetText(#zeilen,"4")
SetGadgetState (#spalten,3) : SetGadgetText(#spalten,"3")
SetGadgetState(#rahmen,0): SetGadgetText(#rahmen,"0")
SetGadgetState(#pos2,1)
position = "center"
farbe = RGB(255,255,255)
;MessageRequester("farbe", Str(farbe)+" "+Str(Red(farbe))+" "+Str(Green(farbe))+" "+Str(Blue(farbe))+" " +Hex(Red(farbe))+" "+Hex(Green(farbe))+" "+Hex(Blue(farbe)))
DisableGadget(#select,1)
Repeat
back:
Event = WaitWindowEvent()
If Event = #PB_EventMenu
;Debug "WindowID: " + Str(EventWindowID())
MenuID = EventMenuID()
EndIf
If Event = #PB_EventGadget
;Debug "WindowID: " + Str(EventWindowID())
GadgetID = EventGadgetID()
If GadgetID = #Hoehe
SetGadgetText(#Hoehe,Str(GetGadgetState(#Hoehe)))
ElseIf GadgetID = #Breite
SetGadgetText(#Breite,Str(GetGadgetState(#Breite)))
ElseIf GadgetID = #anderung
SetGadgetText(#anderung,Str(GetGadgetState(#anderung)))
ElseIf GadgetID = #select
Path = PathRequester("Bitte Bildordner wählen","" )
If path
If ExamineDirectory(0, path, format)
Repeat
FileType = NextDirectoryEntry()
If FileType
FileName$ = DirectoryEntryName()
If FileType = 1
pics = pics + 1
EndIf
EndIf
Until FileType = 0
Else
MessageRequester("Error!", "Fehler beim Laden der Bilder im Ordner. Stellen sie fest, ob sich Bilder im Ordner Befinden")
Goto back
EndIf
If pics = 0
MessageRequester("Error!", "Keine Bilder im Ordner")
Goto back
EndIf
Dim bilder.s(pics)
Dim bilder_v.s(pics)
CreateDirectory(installpfad+GetGadgetText(#titel))
ExamineDirectory(0, path, verz+format)
UseJPEGImageDecoder()
UseTGAImageDecoder()
UsePNGImageDecoder()
UseTIFFImageDecoder()
For x = 1 To pics
SetGadgetState(#progress, Int(((x/pics)*100)*2))
FileType = NextDirectoryEntry()
If FileType
CopyFile(path+DirectoryEntryName(), installpfad+GetGadgetText(#titel)+"\"+DirectoryEntryName())
bilder(x) = GetGadgetText(#titel)+"\"+DirectoryEntryName()
CreateImage(x,GetGadgetState(#breite), GetGadgetState(#hoehe))
LoadImage(X,installpfad+bilder(x))
StartDrawing(WindowOutput())
DrawImage(UseImage(x),1000,1000)
ResizeImage(x, (GetGadgetState(#breite)+GetGadgetState(#anderung)),( GetGadgetState(#hoehe))+GetGadgetState(#anderung))
StopDrawing()
SaveImage(X, installpfad+GetGadgetText(#titel)+"\Vorschau_"+Str(x)+".bmp",#PB_ImagePlugin_BMP)
bilder_v(x) = GetGadgetText(#titel)+"\Vorschau_"+Str(x)+".bmp"
FreeImage(x)
EndIf
Next
;MessageRequester("test0", bilder(x-1))
;MessageRequester("test1",path+DirectoryEntryName() + " quelle")
;MessageRequester("test2",installpfad+GetGadgetText(#titel)+"\"+DirectoryEntryName() + " ziel")
For x = 1 To pics
CopyFile(bilder(x),GetGadgetText(#titel))
bilder(x) = GetGadgetText(#titel) +"\"+ GetFilePart(bilder(x))
Next
DisableGadget(#erstellen,0)
MessageRequester("Success!", "Es befinden sich " + Str(pics) + " Bilder im ordner " + path + " , die erfolgreich geladen umd nach "+installpfad+GetGadgetText(#titel)+"\ kopiert wurden!")
EndIf
SetGadgetText(#picsges, Str(pics))
If pics > GetGadgetState(#zeilen)*GetGadgetState(#spalten)
SetGadgetText(#warning,"too much pics!")
EndIf
ElseIf GadgetID = #zeilen
SetGadgetText(#zeilen,Str(GetGadgetState(#zeilen)))
SetGadgetText(#maxpics,Str(GetGadgetState(#zeilen)*GetGadgetState(#spalten)))
If pics > GetGadgetState(#zeilen)*GetGadgetState(#spalten)
SetGadgetText(#warning,"too much pics!")
Else
SetGadgetText(#warning," ")
EndIf
ElseIf GadgetID = #spalten
SetGadgetText(#spalten,Str(GetGadgetState(#spalten)))
SetGadgetText(#maxpics,Str(GetGadgetState(#zeilen)*GetGadgetState(#spalten)))
If pics > GetGadgetState(#zeilen)*GetGadgetState(#spalten)
SetGadgetText(#warning,"too much pics!")
Else
SetGadgetText(#warning," ")
EndIf
ElseIf GadgetID = #rahmen
SetGadgetText(#rahmen,Str(GetGadgetState(#rahmen)))
ElseIf GadgetID = #titel
ElseIf GadgetID = #Datei
ElseIf GadgetID = #format
;SetGadgetText(1, Str(GetGadgetState(1)))
format = GetGadgetText(#format)
ElseIf GadgetID = #border
SetGadgetText(#border,Str(GetGadgetState(#border)))
ElseIf GadgetID = #vor
ElseIf GadgetID = #nach
ElseIf GadgetID = #colour
farbe = ColorRequester()
ElseIf GadgetID = #fontfarbe
textfarbe = ColorRequester()
ElseIf GadgetID = #clr1
ClearGadgetItemList(#vor)
ElseIf GadgetID = #clr2
ClearGadgetItemList(#nach)
ElseIf GadgetID = #pos1
position="right"
ElseIf GadgetID = #pos2
position="center"
ElseIf GadgetID = #pos3
position="left"
ElseIf GadgetID = #pfadwahl
installpfad = PathRequester("Bitte Speicherpfad der Datei angeben","")
SetGadgetText(#pfad, installpfad)
DisableGadget(#select,0)
ElseIf GadgetID = #pfad
installpfad = GetGadgetText(#pfad)
DisableGadget(#select,0)
ElseIf GadgetID = #erstellen
;If GetGadgetState(#zeilen)*GetGadgetState(#spalten) <= pics
Goto erstell
;Else
;MessageRequester("Error", "Nicht genügend bilder vorhanden um Tabelle vollständig auszufüllen. Bitte ändern sie die Zeilen oder Die Spalten!")
;EndIf
EndIf
EndIf
Until Event = #PB_EventCloseWindow
End
erstell:
Z = 0
;DeleteDirectory(installpfad+GetGadgetText(#titel), "*.*" , #PB_FileSystem_Recursive)
CreateDirectory(installpfad+GetGadgetText(#titel))
ExamineDirectory(0, path, verz+format)
UseJPEGImageDecoder()
UseTGAImageDecoder()
UsePNGImageDecoder()
UseTIFFImageDecoder()
For x = 1 To pics
SetGadgetState(#progress, Int((x/pics)*100))
FileType = NextDirectoryEntry()
If FileType
CopyFile(path+DirectoryEntryName(), installpfad+GetGadgetText(#titel)+"\"+DirectoryEntryName())
bilder(x) = GetGadgetText(#titel)+"\"+DirectoryEntryName()
CreateImage(x,GetGadgetState(#breite), GetGadgetState(#hoehe))
LoadImage(X,installpfad+bilder(x))
StartDrawing(WindowOutput())
DrawImage(UseImage(x),1000,1000)
ResizeImage(x, (GetGadgetState(#breite)+GetGadgetState(#anderung)),( GetGadgetState(#hoehe))+GetGadgetState(#anderung))
StopDrawing()
SaveImage(X, installpfad+GetGadgetText(#titel)+"\Vorschau_"+Str(x)+".bmp",#PB_ImagePlugin_BMP)
bilder_v(x) = GetGadgetText(#titel)+"\Vorschau_"+Str(x)+".bmp"
FreeImage(x)
EndIf
Next
;MessageRequester("test0", bilder(x-1))
;MessageRequester("test1",path+DirectoryEntryName() + " quelle")
;MessageRequester("test2",installpfad+GetGadgetText(#titel)+"\"+DirectoryEntryName() + " ziel")
For x = 1 To pics
CopyFile(bilder(x),GetGadgetText(#titel))
bilder(x) = GetGadgetText(#titel) +"\"+ GetFilePart(bilder(x))
Next
red$= Hex(Red(farbe))
If Len(red$)=1
red$ = "0"+red$
EndIf
green$= Hex(Green(farbe))
If Len(green$)=1
green$ = "0"+green$
EndIf
blue$= Hex(Blue(farbe))
If Len(blue$)=1
blue$ = "0"+blue$
EndIf
red2$= Hex(Red(textfarbe))
If Len(red2$)=1
red2$ = "0"+red2$
EndIf
green2$= Hex(Green(textfarbe))
If Len(green2$)=1
green2$ = "0"+green2$
EndIf
blue2$= Hex(Blue(textfarbe))
If Len(blue2$)=1
blue2$ = "0"+blue2$
EndIf
CreateFile(1,installpfad+"\"+GetGadgetText(#Datei))
OpenFile(1,installpfad+"\"+GetGadgetText(#Datei))
UseFile(1)
WriteStringN("<html>")
WriteStringN("<head>")
WriteStringN("<meta name="+Chr(34)+"generator"+Chr(34)+" content="+Chr(34)+"Benpicco´s Thumbnail Maker"+Chr(34)+">")
WriteStringN("<title>"+ GetGadgetText(#titel) + "</title>")
WriteStringN("</head>")
WriteStringN("<body bgcolor = "+Chr(34) +"#"+red$+green$+blue$+Chr(34) + " text="+Chr(34) +"#"+red2$+green2$+blue2$+Chr(34) + ">")
WriteStringN(GetGadgetText(#vor)+"<br>")
WriteString("<div align="+position+">")
WriteStringN("<table border="+Chr(34) + GetGadgetText(#border) + Chr(34) +">")
For Y = 1 To GetGadgetState(#zeilen)
WriteStringN("<tr>")
For x = 1 To GetGadgetState(#spalten)
Z = Z+1
SetGadgetState(#progress, Int((((GetGadgetState(#zeilen)+GetGadgetState(#spalten))/Z)*100)+100))
OnErrorResume()
If Z > pics
Goto weiter
EndIf
If GetGadgetState(#bildtext)=1
WriteStringN("<div style="+Chr(34)+"position:absolute;"+Chr(34)+">")
EndIf
WriteStringN("<td><a href="+Chr(34)+bilder(z)+Chr(34)+" target = "+Chr(34)+"_blank"+Chr(34)+"><img src="+Chr(34)+bilder_v(z)+Chr(34)+"height = "+Chr(34)+GetGadgetText(#hoehe)+Chr(34)+" border="+GetGadgetText(#rahmen)+" width = "+Chr(34)+GetGadgetText(#breite)+Chr(34)+" alt="+Chr(34)+GetFilePart(bilder(z))+Chr(34)+"+ onMouseOver="+Chr(34)+"this.width ="+Chr(39)+Str(GetGadgetState(#breite)+GetGadgetState(#anderung))+Chr(39)+Chr(59)+" this.height = "+Chr(39)+ Str(GetGadgetState(#hoehe)+GetGadgetState(#anderung))+Chr(39)+ Chr(59)+Chr(34)+" onMouseOut = "+Chr(34)+"this.width="+Chr(39)+GetGadgetText(#breite)+Chr(39)+Chr(59)+" this.height="+Chr(39)+GetGadgetText(#hoehe)+Chr(39)+Chr(59)+Chr(34)+"></a></td>")
If GetGadgetState(#bildtext) = 1
textbild$=RemoveString(GetFilePart(bilder(Z)), GetExtensionPart(("."+bilder(Z))),1)
WriteStringN( "<p style="+Chr(34)+"position:absolute; top:3%; left:25%; width:100%;"+Chr(34)+"><font size=2%>"+Chr(34)+textbild$+Chr(34)+"</font></div></p>")
EndIf
Next
weiter:
WriteStringN("</tr>")
Next
WriteStringN("</table></div><br>")
WriteStringN(GetGadgetText(#nach)+"<br>")
WriteStringN("</body></html>")
CloseFile(1)
SetGadgetState(#progress,200)
MessageRequester("Sucess!", "Bildvorschau wurde erfolgreich erstellt!")
RunProgram(installpfad+"\"+GetGadgetText(#Datei))
Ich hab nämlich nur die demo, da gehen nicht mehr als ca. 800 Zeilen... (tatsächlich ca. um die 650)
ups, kann das mal jemand nach Anwendungen verschieben?