Skript Bilder zusammenfügen und rahmen

  • Ersteller Ersteller Lui
  • Erstellt am Erstellt am
AW: Bilder zusammenfügen und rahmen

Lieber Heinz - du weißt ja, was du Wert bist, gell :-*

kürzlich war ich mal auf dieser Seite (als es um Schatten ging) - da habe ich aber diese nicht gesehen. Was nicht heißen soll, dass sie nicht schon da* waren :-[

Danke dir fürs Finden - Danke an Heidi fürs Preis geben ;) :D



*ich meinte diesen speziellen - bzw. die Anweisung dazu.
die anderen kommen mir irgendwie bekannter vor
 
AW: Bilder zusammenfügen und rahmen

@ Irene,
doch, der war von Anbeginn dabei. Ich weiß das sicher, da er mir sofort ins Auge stach und ich mir gleich die Werte sicherte.
 
AW: Bilder zusammenfügen und rahmen

Hallo Lui!

Einfach super!

Es wäre auch nicht schlecht, wenn man mehrere Bildreihen festlegen könnte. Jetzt habe ich nur eine Reihe.
Kann man das irgendwie machen?

Grüße I.F.
 
AW: Bilder zusammenfügen und rahmen

I.F. schrieb:
Hallo Lui!

Einfach super!

Es wäre auch nicht schlecht, wenn man mehrere Bildreihen festlegen könnte. Jetzt habe ich nur eine Reihe.
Kann man das irgendwie machen?

Grüße I.F.


Hallo Lui,
vielen Dank für dein Super-Skript, habe ich schon öfters gut einsetzen können. Und wenn Du mal vor Langeweile nicht mehr weißt, was Du tun sollst, dann schließe ich mich mal I.F. an und sag auch mal, mach doch bitte, bitte mehr Reihen. Das wäre noch die Krönung.
Gruß
Stefan
 
AW: Bilder zusammenfügen und rahmen

Geht doch auch über die Seitenausgabe. Wer von den "Meißener-Treffen"-Leuten möchte das mal erläutern? ;D
 
AW: Bilder zusammenfügen und rahmen

Auf vielseitigen Wunsch:

Sript für Mehrzeilige Collagen

Postkarte_web.jpg


Code:
'FFSubmenu=Rahmen
'FFName=Collage 1.3

' ***********************************************************************
' Script by Lui
' V1.3, 05.10.06
' 
' Fügt mehrere Bilder zusammen und bildet einen Rahmen darum
' Eingabewerte: Rahmenbreite, Einzelbildbreite, Zeilen Rahmenfarbe
' Ausgabe: Zusammengesetztes Bild
' Schalter:

debuging = false
optimierung = "exakt"

' Optimierung kann auf "zeit" oder auf "exakt" eingestellt werden.
' Im Falle von "zeit" kann es vorkommen, dass weniger Zeilen verwendet 
' werden als angegeben; "exakt" hat längere Laufzeit
'
' Achtung: debug und exakt nicht zusammen verwenden
' ***********************************************************************





' ************** Variablen Definieren
dim i, imagenum							' integer Zähler
dim y_tot, y_row, rahmen	            ' integer Pixel
dim format								' rael
dim name, dlg							' string, dialog
dim color, color_r, color_g, color_b 	' integer color

dim rows, rows_test 

' ************** Ausgewählte Bilder prüfen (Anzahl)

imagenum = FF_GetImageCount

' ************** Rahmenbreite definieren

call FF_AddDialog  (dlg,110,70)
call FF_AddControl (dlg,"Rahmenbreite","STATIC",0,2,65,11)
call FF_AddControl (dlg,"rahmen","SLEDIT",70,0,33,10)
call FF_AddControl (dlg,"Höhe der Bilder","STATIC",0,15,65,11)
call FF_AddControl (dlg,"y_row","SLEDIT",70,15,33,10)
call FF_AddControl (dlg,"Zeilen","STATIC",0,30,65,11)
call FF_AddControl (dlg,"rows","SLEDIT",70,30,33,10)
call FF_AddControl (dlg,"OK","BUTTON",70,50,33,11)
call FF_SetControl (dlg,"rahmen",20)
call FF_SetControl (dlg,"y_row",1000)
call FF_SetControl (dlg,"rows",1)
call FF_ShowDialog(dlg)
rahmen = int (FF_GetControl(dlg,"rahmen"))
y_row = int (FF_GetControl(dlg,"y_row"))
rows = FF_GetControl(dlg,"rows")
call FF_CloseDialog(dlg)

' ************** Rahmenfarbe bestimmen (Einzelfarben: altlast)

color = FF_EnterColor()
color_b = int (color / 256 / 256)
color_g = int ((color - color_b * 65536) / 256)
color_r = int ((color - color_b * 65536) - color_g * 256)

' ************** Bilder in Stack laden, X-Werte einlesen *****************
' ************** Erstes Bild befindet sich zuunterst im Stack ************

cols = int (imagenum / rows) -1

Dim Xarray()					' Array, beinhaltet Breite der Bilder
redim Xarray(imagenum)

for i = 0 to imagenum -1
	name = FF_GetImageName(imagenum -1 - i)
	call FF_LoadImage(name)
	Xarray(imagenum - i -1) = (y_row * FF_GetImageWidth) / FF_GetImageHeight
	call FF_SetProgressText(i,imagenum-1,"Bilder einlesen  (Schwitt 1/3)")
next
Xarray (imagenum) =  1			' beugt überschreitungen vor


' **************    optimale Bildbreite herausfinden *********************

Dim Row()
redim Row(imagenum + 1)
' Row(0) = anzahl Rows in Test, Row(x>0) = letztes BildNr in der Row


call FF_SetProgressText(50,100,"optimieren  (Schwitt 2/3)")

x_tot = y_row
do 
	OK = true
	x_row = 0
	i = 0
	rows_test = 0
	Do 
		rows_test = rows_test + 1
		x_row = 0
		Do 
			x_row = x_row + Xarray(i) + rahmen
			i = i + 1
			if debuging then call FF_MessageBox("cols="&cols&", rows_test="&rows_test&"   i="&i&", x_row="&x_row&" x_tot="&x_tot, 64)
		loop until (x_row + Xarray(i) >= x_tot or i = imagenum)
		if (x_row + Xarray(i)) = x_tot then Row(rows_test) = i else Row(rows_test) = i -1
	loop until i = imagenum
	
	if int(rows_test) > int(rows) then 
		OK = false 
		if optimierung = "exakt" then x_tot= x_tot +1 else x_tot = x_tot + y_row / 10
	end if
	if debuging then call FF_MessageBox(OK, 64)
loop until OK


if debuging then call FF_MessageBox(rows_test&", "&Row(0)&", "&Row(1)&" , "&Row(2)&" rows="&rows&" OK="&OK, 64)



'################# genaue Bildbreite bestimmen, nach breitester Spalte #############
' bei " exakt" eigentlich nicht nötig

i = 0
col = 1
x_tot = 0
do while i < imagenum
	x_test = 0 - rahmen
	do while i < Row(col) + 1
	x_test = x_test + Xarray(i) + rahmen
	i = i + 1
	loop
	if x_test > x_tot then x_tot = x_test
	col = col + 1
loop

' ___________________________________________________________________________________
' _
' _                                 Bildbearbeitung
' ___________________________________________________________________________________


' ***** neues Bild generieren

y_total = (rows * y_row) + (rows -1) * rahmen
if debuging then call FF_MessageBox("Bildgrösse: x_tot="&x_tot&", y_total="&y_total, 64)

call FF_NewImage(x_tot, (rows * y_row) + (rows -1) * rahmen, color)
call FF_pushImage()

' ***** Loop für Bilder einfügen

i = 0
col = 1
do while i < imagenum
	x = 0
	do while i < Row(col) + 1
		name = FF_GetImageName(i)
		call FF_LoadImage(name)
		a = x
		b = int ((col-1) * (y_row + rahmen))
		c = (y_row * FF_GetImageWidth) / FF_GetImageHeight
		d = y_row
		if debuging then call FF_MessageBox("Bild Nummer "&i&" einfügen mit werten:"&a&", "&b&", "&c&", "&d, 64)
		call FF_Miximage(a,b,c,d,255)
		x = x + (y_row * FF_GetImageWidth) / FF_GetImageHeight + rahmen
		i = i + 1
		call FF_SetProgressText(i,imagenum-1,"Bilder zusammenfügen (Schwitt 3/3)")
	loop
	if debuging then call FF_MessageBox("Zeile Nummer "&col&" beendet", 64)
	col = col + 1
loop
call FF_PopImage()
' ***** Rahmen darum und ausgeben

call FF_ExtendCanvas (rahmen,rahmen,rahmen,rahmen,color_r,color_g,color_b)
call FF_Reload()

Die Anzahl Zeilen können angegeben werden, das Script versucht bei unterschiedlichen Bildvormaten die Bilder optimal auf die Zeilen zu verteilen. Die Reihenfolge wird jedoch nicht verändert.
Es handelt sich um ein Visual-Basic Skript,das als *.vbs in FixFotos Skriptverzeichnis gespeichert werden muß. Anschließend die Skripte neu einlesen.

Ich stelle das Script vorerst hier ein, wenn es der Praxis standhält kann man dann das alte Script im Zubehör ersetzen.

Gruss Lui und viel Spass
 
Zuletzt bearbeitet:
AW: Bilder zusammenfügen und rahmen

Hallo Lui,
du bist spitze!!!

Bei mir funktioniert das Skript bis jetzt sehr gut.
Herzlichen Dank.
Gruß
Stefan
 
AW: Bilder zusammenfügen und rahmen

Das ist einfach super! Danke Lui, mit einer Ansichtskarte (natürlich mit deinem Skript gebastelt). ;D

skripttest_moritzburg.jpg
 
AW: Bilder zusammenfügen und rahmen

Dem Lob kann ich mich nur voll anschliessen. Ich habe eine Verwendungsmöglichkeit für die Rahmung -> zwei Halbbilder eines Stereopaares.
Peter
 
AW: Bilder zusammenfügen und rahmen

Einfach nur toll, ganz vielen Dank, Lui! :)
Funktioniert bei mir einwandfrei.
Eine Frage nur zur Kosmetik:
Könntest du im Auswahlfenster (Linienanzahl, Bildergrösse usw.) links einen etwas grösseren Rand lassen? Im Moment beginnt der Text direkt am Rahmen, was mich anfänglich leicht verwirrt hat, weil ich dachte, da sei etwas abgeschnitten 8-)
 
AW: Bilder zusammenfügen und rahmen

einwandfrei, Lui! Dankeschön!

schließe mich trotzdem Elkes Bitte an :)
 
AW: Bilder zusammenfügen und rahmen

Hallo Lui!

Genau das meinte ich.
Vielen Dank und Grüße

I.F.
 
AW: Bilder zusammenfügen und rahmen

Hallo zusammen,

ich habe mir erlaubt, Luis Eingabedialog etwas zu modifizieren und damit "augenfreundlicher" zu gestalten:

Bitte im FF-Skripteditor folgenden Block austauschen:

Code:
' ************** Rahmenbreite definieren

call FF_AddDialog  (dlg,110,70)
call FF_AddControl (dlg,"Rahmenbreite","STATIC",10,7,65,11)
call FF_AddControl (dlg,"rahmen","SLEDIT",70,5,33,10)
call FF_AddControl (dlg,"Höhe der Bilder","STATIC",10,20,65,11)
call FF_AddControl (dlg,"y_row","SLEDIT",70,20,33,10)
call FF_AddControl (dlg,"Zeilen","STATIC",10,35,65,11)
call FF_AddControl (dlg,"rows","SLEDIT",70,35,33,10)
call FF_AddControl (dlg,"OK","BUTTON",35,50,33,11)
call FF_SetControl (dlg,"rahmen",20)
call FF_SetControl (dlg,"y_row",1000)
call FF_SetControl (dlg,"rows",1)
call FF_ShowDialog(dlg)
rahmen = int (FF_GetControl(dlg,"rahmen"))
y_row = int (FF_GetControl(dlg,"y_row"))
rows = FF_GetControl(dlg,"rows")
call FF_CloseDialog(dlg)

Schönen Gruß,

Martin
 
AW: Bilder zusammenfügen und rahmen

Auch von mir : Danke Martin :)
 
AW: Bilder zusammenfügen und rahmen

Danke für all Eure Rückmeldungen und die Optische verschönerung der Dialogs :)

Gruss Lui
 
AW: Bilder zusammenfügen und rahmen

Hallo,

wenn ich 9 Bilder auswähle und 3 Reihen haben möchte, erhalte ich immer im Schritt 3/3 nach 25% folgende Fehlermeldung:



Was mach ich da falsch?
 
Zuletzt bearbeitet:
AW: Bilder zusammenfügen und rahmen

Hallo!

Aktueller Windows Scripting Host installiert?

Gruß,

Ralf
 
Zurück
Oben