Skript Bilder zusammenfügen und rahmen

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

Hallo Andreas,

kann ich nicht nachvollziehen, weder mit Bildern ausschließlich im Hoch- bzw. Querformat noch bei gemischten Bildern.
Es wäre nur interessant, welcher der Werte überschritten wird.
Welche Bildhöhe wird denn verwendet?

Schönen Gruß,

Martin
 
AW: Bilder zusammenfügen und rahmen

Ich bin wieder einmal begeistert, was man hier in diesem Forum alles geboten bekommt.

Zunächst das Script von Lui - tolle Idee
und dann wieder die Hilfestellung von Martin.

Einfach Spitze - ganz herzliches Dankeschön an euch beide :-* :-* :-*

Klappt bestens und sieht toll aus.
 
AW: Bilder zusammenfügen und rahmen

magic_halley schrieb:
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?
Hallo Andreas
Eventuell gibts da einen Fehler in der Berechnung. Kannst Du mir die Bildformate angeben und welche Rahmenbreite Du verwendest. Dann kann ich das hier nachvollziehen und den Fehler suchen.

Gruss Lui
 
AW: Bilder zusammenfügen und rahmen

Hallo,

@Ralf: Ich glaube schon, aber wo/wie kann ich das überprüfen (das erste Skript von LUI zu diesem Thema 'Bilder zusammenfügen und Rahmen' funktioniert bei mir einwandfrei!)

@Lui: Bildformat: 3.872*2592, Anzahl Bilder 9, Rahmenbreite 20, Höhe der Bilder 1.000, Zeilen 3.

Heute ist der Fehler wieder bei Schritt 3/3 afgetreten, aber dieses mal bei 100%?!?

Ich hoffe das hilft weiter!
 
AW: Bilder zusammenfügen und rahmen

Hallo Andreas!

Deinen aktuellen WSH kannst Du z.B. mit Werners Diagnose-Skript ermitteln.

Gruß,

Ralf
 
AW: Bilder zusammenfügen und rahmen

magic_halley schrieb:
@Lui: Bildformat: 3.872*2592, Anzahl Bilder 9, Rahmenbreite 20, Höhe der Bilder 1.000, Zeilen 3.
Bei diesen Werten erhalte ich ebenfalls einen Fehler. Das ist insofern gut, dass ich den Fehler somit analysieren kann. Ich werde mich melden, wenn ich mehr weiss...

Lui
 
AW: Bilder zusammenfügen und rahmen

Hallo,

@Ralf: Danke!

@Lui: Na da bin ich ja froh! Ich hab' schon an mir gezweifelt! Bei allen funktioniert es, nur bei mir klappt's nicht!
 
AW: Bilder zusammenfügen und rahmen

Hallöchen zusammen!
Dumme Frage: habe ich eine Chance Bilder in einer bestimmten Reihenfoge rahmen zu lassen (interssant für Wechsel hochkant/ quer) oder muß ich erst die Bilder neu benennen und kann dann rahmen lassen?
 
AW: Bilder zusammenfügen und rahmen

Hallo Jörg,

Gravenhorst schrieb:
Hallöchen zusammen!
Dumme Frage: habe ich eine Chance Bilder in einer bestimmten Reihenfoge rahmen zu lassen (interssant für Wechsel hochkant/ quer) oder muß ich erst die Bilder neu benennen und kann dann rahmen lassen?
das geht mit einer Bilderliste, da kannst Du die Bildreihenfolge beliebig ändern. Wenn die stimmt alle Bilder in der Liste markieren und aus dem Kontextmenü der Bilderliste(!) FFSkript -> Rahmen -> Collage1.3 auswählen.

Schönen Gruß,

Martin
 
AW: Bilder zusammenfügen und rahmen

Hallo Martin!
Linley schrieb:
FFSkript -> Rahmen -> Collage1.3 auswählen.
Nun habe ich ein Problem (siehe Anhang).
 

Anhänge

  • New02.webp
    New02.webp
    7,9 KB · Aufrufe: 530
AW: Bilder zusammenfügen und rahmen

Dreh die beiden Operanden mal um also:

loop until ( (i=imagenum) or (x_row+Xarray(i)>=x_tot) )

(mit zusätzlichen Klammern, zur Sicherheit)
 
AW: Bilder zusammenfügen und rahmen

Hallo Jörg,

Gravenhorst schrieb:
Nun habe ich ein Problem (siehe Anhang).
Problem reproduzierbar, Abhilfe auf die Schnelle: Lad mal mindestens ein Bild ... ;D

Schönen Gruß,

Martin
 
AW: Bilder zusammenfügen und rahmen

Hallo Jörg,

Gravenhorst schrieb:
Ich lade in meine Collage 10 Bilder !
der Fehler tritt auf, wenn keine Bilder markiert sind, deshalb schätze ich mal, dass das passiert, weil Du Deine Bilder in einer Bilderliste liegen hast, das Skript aber über F10 aufrufst. Das funktioniert nicht bei Verwendung einer Bilderliste. Du musst einen Rechtsklick in die Bilderliste machen und dort aus dem Kontextmenü FFSkript -> Rahmen -> Collage1.3 aufrufen, vorher natürlich die Bilder in der Bilderliste markieren.

Schönen Gruß,

Martin
 
AW: Bilder zusammenfügen und rahmen

Leider kann ich das Script noch nicht direkt uploaden, deshalb die neue Version erstmals hier:

Code:
'FFSubmenu=Rahmen
'FFName=Collage 1.5

' ***********************************************************************
' Script by Lui
' V1.5, 13.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
'
' --------------------------------
' 1.4: - Rundungsfehler korrigiert (Werte für MixImage)
'      - Debuggung verbessert durch einführung von y_3 (optimierung = "zeit")
'
' 1.5: - Kontrolle ob mindestens 1 Bild ausgewählt
' ***********************************************************************





' ************** Variablen Definieren
dim i, imagenum							' integer Zähler
dim y_tot, y_row, y_3, 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

if imagenum < 1 then call FF_ErrorBreak("Bitte mindestens 1 Bild auswählen")

' ************** 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)

' ************** 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)

y_3 = 0
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
	y_3 = y_3 + Xarray(imagenum - i -1) / 3
	call FF_SetProgressText(i,imagenum-1,"Bilder einlesen  (Schritt 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  (Schritt 2/3)")

if optimierung = "exakt" then x_tot = y_row else x_tot = y_3
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 = int (x)
		b = int ((col-1) * (y_row + rahmen))
		c = int ((y_row * FF_GetImageWidth) / FF_GetImageHeight)
		d = int (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 (Schritt 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()

Probierts mal damit

Gruss Phil
 
AW: Bilder zusammenfügen und rahmen

danke Lui,

eine feine Sache, es klappt ganz prima.

lg jo
 
AW: Bilder zusammenfügen und rahmen

Hallo,
jetzt, da der Thread und auch das Script schon fast das Endstadium (sprich Reife) erlangt haben, auch von mir noch ein Post.
Zunächst Dank an Lui für seine wirklich gute Arbeit. Habe eben eine Probe gemacht und bin beeindruck.
Daß ich jetzt erst poste, hängt nämlich auch damit zusammen, daß ich zunächst Michaels Vorschlag aufgriff und Lui's Ergebnis mit dem Seitenlayout in FF nachempfinden wollte. Es geht und bringt auch ansprechende Ergebnisse. Ich räume jedoch ein, daß es dieses Script schneller macht, auch wenn ich eine Seite gleich mit einem Klick mit Platzhaltern fülle. Es sind hier die Ausrichtungen, die Zeit erfordern.
Nun aber meine Frage: Will ich eine Collage erstellen, wie hier nachstehend gezeigt,
New01-1.jpg

gibt mir dazu das Script auch die Möglichkeit? Denn im kleinen sich öffnenden Eingabefenster fand ich dazu keine Hinweise. Vielleicht habe ich auch nur etwas übersehen. Dann bitte ich um Hilfestellung. Dabei sehe ich ein Feld für Beschriftungen nicht als das Problem. Es geht mir lediglich um unterschiedlich große Bilder in unterschiedlicher Anordnung.
 
Zurück
Oben