Denna delen av 99 uppdateras inte längre utan har arkiverats inför framtiden som ett museum.
Här kan du läsa mer om varför.
Mac-nyheter hittar du på Macradion.com och forumet hittar du via Applebubblan.

Extrahera bilder ur Filemaker Pro

Tråden skapades och har fått 3 svar. Det senaste inlägget skrevs .
1
  • Medlem
  • 2004-04-04 15:20

Problem:

Jag har ett Filemaker Pro 7 Register (körs på MacOSX Panther) som inehåller ett antal 1000 bilder. Bilderna är sparade i ett container fält men lagras inte i filsystemet utan i själva registret.
Av säkerhets/backup själ enligt upphovsmakaren av registret.

Jag behöver nu efter vissa sökkriterier extrahera ett antal bilder till (flera 100) till filsystemet för vidare bearbetning. Eftersom det här är i princip ett en gångs jobb så är inte någon Plugin (Heter det så ? någon option, vet att sådana finns)

Så mina alternativ är antingen Manusscript eller AppleScript.

Men jag har lite problem med båda lösningarna. Jag har labbat lite med "Photo Catalog" som följer med
Filemaker och funnit följande:

I FileMaker hittade jag efter lite sökande "Export Field Content". Den fungerar i princip men verkar bara stödja hårdkoddade namn på det jag vill exportera. Alltså jag kan inte dynamiskt ange vilket filnamn bilden ska ha på disken utan antingen måste det hårdkodas i scriptet eller så får jag en popup för varje bild och måste själv mata in namnet på bilden. Jobbigt med flera 100 bilder (även om det är ett engångsjobb vill jag göra en snygg lösning) och vill göra funktionen återanvändbar

Manusscriptet ser ut enligt:

Go to Layout [ "Form with Metadata" (Photo Catalog) ]
 Go to Record/Request/Page [ First ] 
Sort Records [ Specified Sort Order: Photo Catalog::Name; ascending Photo Catalog::Date Entered; descending ] [ Restore ]
 Loop 
Go to Field [ Photo Catalog::Image ]
 Export Field Contents [ Photo Catalog::Image ] 
Go to Record/Request/Page [ Next ]
 End Loop 

Fråga: Går det att dynamiskt hämta namnet på bilden från mitt register och använda som parameter till "Export Field Content" i Filemaker 7

Jag tror att ovanstående script steg kräver ett statiskt namn men kan förhoppningsvis ha fel ?!

Min andra tanke var att använda AppleScript för att exportera bilderna men jag lyckas inte få ihop det heller. Det vore fakiskt en snygg lösning att göra allt från AppleScript och det borde gå. Men jag fattar inte hur jag ska kunna extrahera innehållet i ett Container fält och sedan spara innehållet som en bild
(alltså kombinera det lagrade namnet på bilden i registret med inehållet i container fältet som är själva
bilddatat) och FileMaker dokumentationen har inte hjälpt mig här.

Här är det jag lyckats knåpa ihop med AppleScript.

Loopen verkar gå igenom alla bilder men a) Jag kan inte skriva ut innehållet ur bilden i filen i rätt format
b) write verkar endast stödja text. Finns någon fiffig funktion för att spara en bild från ett container fält
i AppleScript ??

tell application "Finder"
	set thefolder to "Bilddata"
	if exists folder thefolder then
		set thefolder to item thefolder as alias
	else
		make new folder with properties {name:"Bilddata"}
		set thefolder to result
	end if
end tell
tell application "FileMaker Pro"
	sort second layout by {field "Name"}
	repeat with i from 1 to count of records
		set TheName to get data first cell
		set MyName to TheName as string
		set TheImage to get data second cell
		set theFile to open for access file (thefolder & MyName as string) with write permission
		--		
		-- write TheName to theFile
		close access theFile
	end repeat
end tell

Kanske är den rätta lösningen en kombination av Manusscript i Filemaker med AppleScript ? Börjar i af att förtvivla och känna mig lite dum i huve..

Så slänger ut problemet här för att se om någon expert på FM har någon smart lösning.

Mvh
/Ulf

Några osammanhänga tips utan att ha läst allför noga:

Du kan göra ett Applescript som ett beräkningsfält och då få med information (filnamn, sökvägar eller vad man i vill) från posten man står i. Sedan är det bara att använda manussteget - Utför Applescript och välja det fältet. (Medans man testar är det bäst att köra via manusredigeraren). Sedan är det bara att ha ett manus som loopar igenom alla poster och vips kan du göra vad du vill.

Du kan också Applescripta att du kopierar innehållet i ett containerfält och sedan klistrar in det i ett nytt dokument i tex Graphic Converter från http://www.lemkesoft.de/ (som är väldigt trevligt som bildredigeringsprogram i kombination med Applescript). Men kopiering är långsam, men om det är en engångsgrej gör det ju inte så mycket.

Så din lösning ligger troligen i att jobba med Applescript helt och hållet.

Lycka till!

/Ola

  • Medlem
  • 2004-04-05 23:58

Tack Taz,

Såg inte skogen för alla träd! Lösningen var ju så simpel....

Jag använder helt enkelt "Export Field Contents" i Filemaker och sparar filen med ett hårdkodad namn. I nästa steg i mitt Filemaker manus kör jag ett AppleScript som helt enkelt döper om filen till orginalnamnet hämtat från Filemaker databasen.

Snygg lösning i Filemaker att man kan inkludera egna AppleScript genom manussteget Perform AppleScript. Som du sa är det bra att testa scriptet först i AppleScript's Manusredigerare och när man är nöjd så klipp & klistrar man in koden i Filemaker. Det är inte hypersnabbt att göra så här men det är i af automatiskt 200 bilder av varierande storlek exporteras på 10-12 sekunder på min iMac G4 800Mhz.

Go to Layout [ "Form with Metadata" (Photo Catalog) ] 
Go to Record/Request/Page [ First ] 
Sort Records [ Specified Sort Order: Photo Catalog::Name; ascending Photo Catalog::Date Entered; descending ] [ Restore ] 
Loop 
Go to Field [ Photo Catalog::Image ] Export Field Contents [ Photo Catalog::Image; "filemac:/Macintosh HD/Users/ulfh/Pictures/Temp/Untitled.jpg" ] 
Perform AppleScript [ Native AppleScript: 
tell application "FileMaker Pro" 
    set TheName to get data second cell of current record 
    tell application "Finder" 
      activate  
      move "Macintosh HD:Användare:ulfh:Bilder:Temp:Untitled.jpg" to
               "Macintosh HD:Användare:ulfh:Bilder:Photo Catalog:" 
      set name of result to TheName 
    end tell 
end tell  ]
Go to Record/Request/Page [ Next; Exit after last ] 
End Loop 

Mvh
/Ulf

Nu har du ju redan löst det, men annars tycks det här vara ett alternativ:

http://www.versiontracker.com/dyn/moreinfo/macosx/22182

1
Bevaka tråden