Darth Weber wrote: ↑January 14th, 2021, 1:48 pmI am trying to add some caption to an image, but i failed in adding these exif informations to a string. Can you help me with an example ? I am trying:
Code: Select all
[Caption]
Meter=String
MeasureName=MeasurePic
X=5
Y=-20R
FontColor=255,255,255,255
FontFace=Segoe UI
FontSize=9
StringEffect=Shadow
FontEffectColor=0,0,0,255
AntiAlias=1
Angle=(Rad(-1))
Text=%1
[GetExifData]
Measure=Plugin
Plugin=RunCommand
Parameter=magick identify -format '%[EXIF:Model]' "[MeasurePic]"
OutputType=ANSI
DynamicVariables=1
[Caption2]
Meter=String
MeasureName=GetExifData
X=5
Y=-40R
FontColor=255,255,255,255
FontFace=Segoe UI
FontSize=9
StringEffect=Shadow
FontEffectColor=0,0,0,255
AntiAlias=1
Angle=(Rad(-1))
Text=%1
[caption] ist working ans displays the filename, but caption2 ist just empty
Take a look at the note from the RunCommand plugin's page from Rainmeter's manual
here - your GetExifData measure
needs to be told to run, otherwise it just sits there and does nothing.
Sample code:
Code: Select all
[Variables]
[Rainmeter]
Update=1000
DynamicWindowSize=1
AccurateText=1
BackgroundMode=2
SolidColor=47,47,47,255
---Measures---
[MeasurePic]
Measure=String
String="D:\Images\Wallpapers\- Single -\Zeus OSX Earth Space.jpg"
UpdateDivider=-1
OnUpdateAction=[!UpdateMeasure GetExifData][!CommandMeasure GetExifData "Run"][!UpdateMeter Caption2][!Redraw]
[GetExifData]
Measure=Plugin
Plugin=RunCommand
Parameter=magick identify -format '%[EXIF:PixelXDimension]' "[MeasurePic]"
OutputType=ANSI
RegExpSubstitute=1
Substitute="(?siU)(?:^'|'$)":""
DynamicVariables=1
---Meters---
[Reference]
Meter=Image
Y=50
[Caption]
Meter=String
MeasureName=MeasurePic
X=5
Y=-20R
FontColor=255,255,255,255
FontFace=Segoe UI
FontSize=9
StringEffect=Shadow
FontEffectColor=0,0,0,255
AntiAlias=1
Angle=(Rad(-1))
Text=%1
[Caption2]
Meter=String
MeasureName=GetExifData
X=5
Y=-40R
FontColor=255,255,255,255
FontFace=Segoe UI
FontSize=9
StringEffect=Shadow
FontEffectColor=0,0,0,255
AntiAlias=1
Angle=(Rad(-1))
Text=%1
Result:
EXIF Width.jpg
Notes:
- I added my own [MeasurePic] measure, since I don't have your full code; obviously, if yours works fine, there's no need to add it again, except the bangs mentioned below
- I placed the bangs that update and run the [GetExifData] measure, update the related meter and redraw the skin in the
OnUpdateAction option of [MeasurePic], but, depending on your workflow, they can be placed in another option (e.g. a LeftMouseUpAction, etc.) as long as that is executed after [MeasurePic] gets its value (so that the command makes sense)
- for some reason, the EXIF:Model didn't work for me (or maybe my image didn't have the needed data), so I used EXIF:PixelXDimension (basically, the image width value) instead; naturally, this can be adjusted as desired
- I slightly formatted the [GetExifData] measure's output in a
regular expression enabled Substitute, in order to remove the single quotes aka the apostrophes from the beginning and end of the string; this part can also be adjusted to your liking, regular expressions (you can test various regex patterns online on sites like
this one) are a powerful tool that can be used to manipulate strings
- I added a dummy [Reference] meter to prevent the caption meters from displaying outside of the skin (since I lacked the meter that you positioned your captions relative to); this is only needed in my sample skin, I suppose everything is positioned correctly in your environment
P.S. Take care not to run [GetExifData] more times that it actually needs to (for example, you don't want ImageMagick to be run every second on every skin update, you just want it to run whenever [MeasurePic] gets a new value). That is the reason why I used an
UpdateDivider of -1 in the triggering measure, i.e. [MeasurePic]. Again, you should adapt the approach to your scenario, if needed.
You do not have the required permissions to view the files attached to this post.