Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

psp9 script mit python - datum

Frage Entwicklung Python

Mitglied: yashi

yashi (Level 1) - Jetzt verbinden

05.04.2006, aktualisiert 11.05.2006, 7830 Aufrufe, 7 Kommentare

Hallo.

Ich bräuchte mal bisschen Hilfe mit der Formatierung eines Datums (stammt aus einer jpeg EXIF)
Da dieses Unterforum aber bis jetzt ungenutzt blieb, vermute ich mal, dass hier weder jemand lesen wird, noch Ideen für Lösungswege posten wird.
Naja versuchen kann man es ja trozdem.

Also falls jemand Ahnung hat:

Ich möchte den string:
2006:04:05 21:40:26
nach
05.04.06
konvertieren.
[Python script für Paint Shop Pro.]


mfg
Mitglied: Dani
05.04.2006 um 21:55 Uhr
G' Abend,
was hast du den genau vor. Ne Beschreibung wäre net schlecht -> sprich für was soll das gut sein. Darf es auch in anderen Sprache sein??

Schönen Abend...


Gruß
Dani
Bitte warten ..
Mitglied: yashi
06.04.2006 um 12:39 Uhr
Juhu eine Antwort


Also falls du Paint Shop Pro 9 kennst - der lässt sich auch (zb bei Stapelverarbeitung) mit einem Python-Script steuern. Und eben so ein Script versuche ich für automatische Datumsstempel zu schreiben. Eine andere Sprache ist nicht möglich da
  1. PSP9 nur Python akzeptiert
  2. man sonst ein Prog schreiben müsste, welches Bildbearbeitung & Einfügen von Text ins Bild drauf hat

Bis jetzt erzeugt mein Script zwar 'nen Stempel, der aber leider genau so wie der Text in der EXIF-info der jpg aussieht. Also eben englisches Datum + Zeit. Wenn man den Text nun formatieren könnte, wär mein Script brauchbar:
2006:04:05 21:40:26
nach
05.04.06

Den String holt sich das Script also schon erfolgreich aus der EXIF (Metadaten einer jpg)
(Quellcode siehe ganz unten)
In der Zeile
01.
CaptionDate = ImageInfo['ExifOriginalDate']
wird der String in eine Variable geschrieben. Nun habe ich mir sowas in der Art wie
datestrn(ImageInfo['ExifOriginalDate'])
oder so vorgestellt. Keine Ahnung wie man eine Variable vom Typ "Datum" anlegt (hab mir ja auch nur alles aus anderen Quellcodes zusammen gesetzt
)
Eine einfache Formatierung des Strings wäre auch denkbar (zb nur die ersten 10 Zeichen)
Naja mein Problem müsste zu 100% mit Python lösbar sein.

Ich hoffe es war verständlich erklärt und ihr könnt helfen (müsste sonst ca 380 Fotos von Hand beschriften -.-)
mfg, yashi



EXIF-Datestamp.PspScript:
01.
from JascApp import * 
02.
import string 
03.
import JascUtils 
04.
 
05.
def ScriptProperties(): 
06.
    return { 
07.
        'Author': u'Jasc Software, Zeromotion', 
08.
        'Copyright': u'Copyright (c) 2002-2004 Jasc Software, Inc.  All rights reserved.', 
09.
        'Description': u"EXIF-Datestamp unten rechts.", 
10.
        'Host': u'Paint Shop Pro 9', 
11.
        'Host Version': u'9.00', 
12.
13.
 
14.
NoEXIFData = u"Auf dem aktuell ausgewählten Bild wurden keine EXIF-Daten gefunden." 
15.
CaptionFontName = u"Arial" 
16.
 
17.
 
18.
def Do(Environment): 
19.
 
20.
    if JascUtils.RequireADoc( Environment ) == App.Constants.Boolean.false: 
21.
        return 
22.
 
23.
     
24.
    # first extract the EXIF data - if we can't find any just return without changing the image 
25.
    ImageInfo = App.Do( Environment, 'ReturnImageInfo', {'GeneralSettings': {'Version': ((9,0,0),1) }} ) 
26.
    if ImageInfo['ExifOriginalDate'] == '': 
27.
        App.Do(Environment,  'MsgBox', { 
28.
                'Buttons': App.Constants.MsgButtons.OK,  
29.
                'Icon': App.Constants.MsgIcons.Stop,  
30.
                'Text': NoEXIFData, 
31.
                'GeneralSettings': {'Version': ((9,0,0),1) } 
32.
                }) 
33.
        return 
34.
 
35.
 
36.
    # save any existing selection 
37.
    SelSaver = JascUtils.SaveSelection( Environment, App.TargetDocument ) 
38.
     
39.
    CaptionDate = ImageInfo['ExifOriginalDate'] 
40.
 
41.
    # Figure out how big the text should be by examining the overall image size.  We'll do a rough 
42.
    # scale based on 1000 pixels.  We won't paint text less than 16 point in any event. 
43.
    ImageMaxDimension = max(App.TargetDocument.Width, App.TargetDocument.Height) 
44.
    TextScaleFactor = max(0.25, float(ImageMaxDimension) / 800.0) 
45.
    TextSize = int(16.0 * TextScaleFactor) 
46.
  
47.
    # now place the text - use right justification at the lower right corner of the image. 
48.
    # we are placing 16 pixel text, so to leave some room for leading we place the first 
49.
    # line of text 24 pixels up from the bottom 
50.
    TextPlacementLine1 = (App.TargetDocument.Width - 4 * TextScaleFactor, App.TargetDocument.Height - (24 * TextScaleFactor)) 
51.
    App.Do( Environment, 'TextEx', { 
52.
            'Visibility': True,  
53.
            'CreateAs': App.Constants.CreateAs.Selection,  
54.
            'Start': TextPlacementLine1,  
55.
            'TextFlow': App.Constants.TextFlow.HorizontalDown,  
56.
            'TextType': App.Constants.TextType.TextBase,  
57.
            'AutoKern': True,  
58.
            'Kerning': 0,  
59.
            'Tracking': 0,  
60.
            'Leading': 0,  
61.
            'Font': CaptionFontName,  
62.
            'PointSize': TextSize,  
63.
            'Italic': False,  
64.
            'Bold': False,  
65.
            'Underline': False,  
66.
            'Strikethru': False,  
67.
            'AntialiasStyle': App.Constants.AntialiasEx.Smooth,  
68.
            'WarpText': True,  
69.
            'SetText': App.Constants.Justify.Right,  
70.
            'Fill': None,  
71.
            'Stroke': None,  
72.
            'LineWidth': 0,  
73.
            'Join': App.Constants.JointStyle.Miter,  
74.
            'MiterLimit': 10,  
75.
            'Characters': CaptionDate,  
76.
            'Strings': None,  
77.
            'TextTarget': (0,0,[1],False),  
78.
            'PathTarget': None,  
79.
            'GeneralSettings': { 
80.
                'ExecutionMode': App.Constants.ExecutionMode.Default,  
81.
                'AutoActionMode': App.Constants.AutoActionMode.Match,  
82.
                'Version': ((9,0,0),1) 
83.
84.
            }) 
85.
 
86.
    # Negativbild 
87.
    App.Do( Environment, 'NegativeImage', { 
88.
            'GeneralSettings': { 
89.
                'ExecutionMode': App.Constants.ExecutionMode.Default,  
90.
                'AutoActionMode': App.Constants.AutoActionMode.Match,  
91.
                'Version': ((9,0,0),1) 
92.
93.
            }) 
94.
 
95.
    # restore the original selection 
96.
    SelSaver.RestoreSelection() 
97.
 
Bitte warten ..
Mitglied: yashi
06.04.2006 um 13:59 Uhr
Hmm...

Hab beim Mittag nochmal drüber nachgedacht. Also wenn ich ne andere Sprache zur Verfügung hätte, würde es ja ganz einfach gehen. ZB. könnte man in eine Batch schreiben:
01.
set "dtmstr=2006:04:05 21:40:26" 
02.
set "dtmstr=%dtmstr:~2%" 
03.
for /f "tokens=1-3 delims=: " %%a in ("%dtmstr%") do echo %%c.%%b.%%a
und man bekommt "05.04.06" Aber wie gesagt - das Problem mit der Bildbearbeitung besteht ja. Um mein Anliegen nun einfacher zu formulieren:
Wenn jemand die paar Zeilen oben nach PYTHON übersetzen könnte, wäre mein Problem gelöst.


mfg
Bitte warten ..
Mitglied: yashi
07.04.2006 um 13:14 Uhr
OK.
Ich habe es jetzt selber gelöst. Danke für eure Aufmerksamkeit. (das soll jetzt nich zynisch klingen oder so ^^)
Hab die Seite vom Python Projekt studiert und folgende Lösung entwickelt:
01.
    CaptionDate = ImageInfo['ExifOriginalDate'].replace( ':', ' ' ) 
02.
    CaptionDate = CaptionDate[8:10] + '.' + CaptionDate[5:7] + '.' + CaptionDate[2:4]
Geht bestimmt auch einfacher.
Bitte warten ..
Mitglied: simba
08.05.2006 um 14:38 Uhr
naja der Weg ist doch perfekt, einzig, dass du auf das replace verzichten kannst.


01.
string  = "2006:04:05 21:40:26" 
02.
date    = string[8:10] + '.' + string[5:7] + '.' + string[:4]  # ggf das letzte als string[2:4] wennde nur 2 stellige Jarheszahl haben willst
tuts auch schon

greetz
simba
Bitte warten ..
Mitglied: yashi
10.05.2006 um 11:45 Uhr
Hallo simba.

Ja, ursprünglich sah mein code auch so aus. Da aber entweder meine PSP9 console oder mein Python die Doppelpunkte als Steuerzeichen erkannt haben, musste ich sie durch Leerzeichen ersetzen. Der String wurde immer beim ersten ":" abgeschnitten. Also so:

"2006

Klingt komisch, ich weiß. Kann es mir auch nicht erklären.
Bitte warten ..
Mitglied: simba
11.05.2006 um 00:45 Uhr
Hmm in der Tat komisch, aber offensichtlich auch schon gelöst ;)


falls es hart auf hart kommt und die Strings mal nicht als Listen ansprechen kannst aus Gründen die mir gerade nicht einfallen wäre auch ein

01.
string  = "2006:04:05 21:40:26" 
02.
date, dummy = string.split(' ') 
03.
jahr, monat, tag = date.split(':') 
04.
tolles_datum = tag + '.' + monat + '.' + jahr
denkbar. quasi die java Variante mit Einbringung der tollen python Mehrfachzuweisung ;)

Viele Wege führen nach Rom


cheers
simba
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
gelöst PowerShell Script Move-Item nach x Tagen (5)

Frage von lupolo zum Thema Batch & Shell ...

Datenbanken
gelöst SQL-Abfrage - DISTINCT - letztes Datum (3)

Frage von emeriks zum Thema Datenbanken ...

VB for Applications
VBS Script zum versenden mehrerer Verknüpfungen zu Dateien per Lotus Notes

Frage von Sentinel87 zum Thema VB for Applications ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (17)

Frage von liquidbase zum Thema Windows Update ...