SubscribeBlog

How to convert photos from within Dolphin or Konqueror

Well, this is actu­ally a spinoff-product from my effort to com­pen­sate a flaw of Digikam. But I think it might be use­ful for any­one and thus deserves an arti­cle of its own.

Imag­ine you have a folder with some pics in it — as they came off your chip or from the cam­era. You are in a hurry and, for exam­ple, need to send some files to some­one else imme­di­ately. They don’t have to be per­fect, should just be smaller. You could start your favourite image-editor, load the photo(s), crop them and  save them again. But this takes some time.

This is where my solu­tion comes in handy.

You open Dol­phin or Kon­queror, mark the respec­tive files with the mouse, right-click, choose Actions and start one of the actions you’ve pre­pared. This is done within sec­onds. Neato, right? ;)

This is how to do it.

The actions in Dolphin/Konqueror are con­trolled by files with the end­ing .desk­top, which reside in ~/.kde4/share/kde/services. These are sim­ple textfiles, which can be edited with your favourite edi­tor — nano, tea, kwrite, kate, leafpad…

So we need to cre­ate some more of these files. You can sim­ply copy/paste mine and change them accord­ing to your needs. I sug­gest you give them mean­ing­ful names. So an action that would resize a photo to 800px on the longest side, change the dpi/lpi to 72 and save the new file as jpg with 75% qual­ity, should be named some­thing like for exam­ple convert_800_72_jpg_75.desktop.

These are the templates.

Cre­ates a jpg, 1000px wide, 72 dpi, 75%

[Desktop Entry]
MimeType=image/*
ServiceTypes=KonqPopupMenu/Plugin
Type=Service
Actions=reSize_1000_72_75_jpg
[Desktop Action reSize_1000_72_75_jpg]
Name=Skalieren auf 1000px 72dpi 75% jpg
Icon=/usr/share/icons/default.kde4/32x32/actions/transform-scale.png
Exec=for i in %U; do convert $i -resize 1000x1000 -density 72 -quality 75 $(echo $i | cut -f1 -d".")_1000_72.jpg && kdialog --title "Resize" --passivepopup "$i wurde bearbeitet" 5; done
Terminal=false

Cre­ates a jpg, 800px wide, 72 dpi, 75%

[Desktop Entry]
MimeType=image/*
ServiceTypes=KonqPopupMenu/Plugin
Type=Service
Actions=reSize_800_72_jpg
[Desktop Action reSize_800_72_jpg]
Name=Skalieren auf 800px 72dpi 75% jpg
Icon=/usr/share/icons/default.kde4/32x32/actions/transform-scale.png
Exec=for i in %U; do convert $i -resize 800x800 -density 72 -quality 75 $(echo $i | cut -f1 -d".")_800_72.jpg && kdialog --title "Resize" --passivepopup "$i wurde bearbeitet" 5; done
Terminal=false

Cre­ates a jpg, por­trait, 600px high, 72 dpi, 75%, and strips off all exif-data

[Desktop Entry]
MimeType=image/*
ServiceTypes=KonqPopupMenu/Plugin
Type=Service
Actions=reSize_600h_72_75_jpg
[Desktop Action reSize_600h_72_75_jpg]
Name=Skalieren Hochformat auf 600px 72dpi 75%
Icon=/usr/share/icons/default.kde4/32x32/actions/transform-scale.png
Exec=for i in %U; do convert $i -resize x600 -density 72 -quality 75 -strip $(echo $i | cut -f1 -d".")_600h_72.jpg && kdialog --title "Resize" --passivepopup "$i wurde bearbeitet" 5; done
Terminal=false

Name= is the name of the action, as you see it in the menu — here in ger­man.
Exec= is the actual action. This is where you have to change val­ues if you want to adopt the script.

Now let’s do some­thing more complex…

Detail of an old cottage

Cre­ates a jpg, 800px wide, 72 dpi, 75% AND adds an even bor­der of 22px in white AND adds my name to the lower right corner

[Desktop Entry]
MimeType=image/*
ServiceTypes=KonqPopupMenu/Plugin
Type=Service
Actions=reSize_800_72_jpg_frame
[Desktop Action reSize_800_72_jpg_frame]
Name=Skalieren als jpg auf 800px 72dpi 75% mit Rahmen und Signatur
Icon=/usr/share/icons/default.kde4/32x32/actions/transform-scale.png
Exec=for i in %U; do convert $i -resize 800x800 -density 72 -quality 75 -gravity southeast -annotate 0 '© Michael Kaiser' -mattecolor "#ffffff" -frame 22 $(echo $i | cut -f1 -d".")_800_72.jpg && kdialog --title "Resize" --passivepopup "$i wurde bearbeitet" 5; done
Terminal=false

Notice that I used ‘con­vert’ and not ‘mogrify’ from the imagemagick-suite in all exam­ples, as the for­mer cre­ates a new file, whereas the lat­ter over­writes the orig­i­nal.
The com­mand takes all for­mats as input that imagemag­ick knows about. The out­put is always .jpg — unless you change that.

The aspect ratio is not touched, no stretch­ing or dis­tort­ing what­so­ever — unless you change that.

Of course you need to have imagemag­ick installed. ‘man con­vert’ and/or ‘man mogrify’ will show you what is pos­si­ble. It is a lot, I assure you ;)

There is a plethora of pos­si­ble appli­ca­tions. I have only begun to dis­cover the pos­si­bil­i­ties myself. Here you’ll find an awe­some guide with many examples.

Have fun! And if you have ques­tions, I’ll try to help.

Fluxbox is fast and sexy

Since bbLean has been my favourite shell for Win­dows for many years it it no sur­prise that I like *box-variants on Linux as well.

I pre­fer them not only because they are lean and fast and highly con­fig­urable, but mostly because they sup­port my work­flow and hardy ever get in the way. And as vir­tu­ally every­thing can be done by keyboard-shortcuts they boost my pro­duc­tiv­ity — if I can remem­ber the short­cut when needed, that is ;) .
Cur­rently I am on fluxbox (the bleed­ing edge git-version), which IMHO has some advan­tages over open­box, the native han­dling of (pseudo-)transparency for example.

Finally it is all about use­abil­ity and resources. I am not a Gnome– or KDE-hater — far from — and yet I pre­fer if not 20 % of my pre­cious RAM are allo­cated by the desktop/windowmanager. I need it for work­ing. And I like some eye-candy, where it makes sense.

The basic tools you’ll need are, beside fluxbox of couse, flux­conf, flux­menu, fluxkeys and fluxstyle. I rec­om­mend to get mint-fm2 as well, as it will gen­er­ate a for­mi­da­ble menu from all you installed apps (see screenshot).

If you want you can have a look at my con­figs, copy them, use them, mod­ify them to your liking.

~/.fluxbox/menu

[begin] (Arch Linux) </usr/share/icons/nuvola/128x128/places/start-here-kde.png>
[exec]  (mic)  {xdg-open /home/mic} </home/mic/.icons/gk4ico/16x16/actions/gtk-home.png>
[exec]  (Web Browser)  {xdg-open http://} </usr/share/icons/nuoveXT2/128x128/categories/applications-internet.png>
[exec]  (Terminal Emulator)  {xterm} </usr/share/icons/hicolor/16x16/status/terminal-bell.png>
[exec]  (Run)  {gmrun} </usr/share/icons/hicolor/128x128/apps/kgoldrunner.png>
[include] (/home/mic/.fluxbox/customMenuEntries)
[separator] (--------)
[include] (/home/mic/.mint-fm2/submenus/Categories)
[separator] (--------)
[exec]  (Quit)  {ciao} </home/mic/.icons/gk4ico/16x16/actions/gtk-quit.png>
[end]

~/.fluxbox/startup

#!/bin/sh
# fluxbox startup-script:
# Lines starting with a '#' are ignored.

# Change keymap - german in this case
setxkbmap -model evdev -layout de nodeadkeys

# numlock anmachen / enable numlock (on,off,toggle)
numlockx on

# Applications you want to run with fluxbox.
# MAKE SURE THAT APPS THAT KEEP RUNNING HAVE AN ''&'' AT THE END.
#
# unclutter -idle 2 &
# wmnd &
# wmsmixer -w &
# idesk &

# Hintergrund setzen / set background with nitrogen
(sleep 2s && nitrogen --restore) &

# start conky - system-monitor (I have several configs, usually you won't need the '-c'-switch)
conky -c ~/.conkyrc.flux &

# klapp-terminal starten / start dropdown-terminal
tilda &

# And last but not least we start fluxbox.
# Because it is the last app you have to run it with ''exec'' before it.
exec fluxbox
# or if you want to keep a log:
# exec fluxbox -log "/home/mic/.fluxbox/log"

~/.fluxbox/init

session.screen0.window.focus.alpha:	255
session.screen0.window.unfocus.alpha:	255
session.screen0.clientMenu.usePixmap:	true
session.screen0.slit.alpha:	255
session.screen0.slit.layer:	Dock
session.screen0.slit.direction:	Horizontal
session.screen0.slit.acceptKdeDockapps:	true
session.screen0.slit.maxOver:	false
session.screen0.slit.autoHide:	false
session.screen0.slit.placement:	RightBottom
session.screen0.slit.onhead:	0
session.screen0.titlebar.left:	Stick
session.screen0.titlebar.right:	Minimize Maximize Close
session.screen0.menu.alpha:	140
session.screen0.iconbar.iconWidth:	128
session.screen0.iconbar.mode:	{static groups} (minimized=yes)
session.screen0.iconbar.usePixmap:	true
session.screen0.iconbar.iconTextPadding:	10l
session.screen0.iconbar.alignment:	Relative
session.screen0.toolbar.widthPercent:	80
session.screen0.toolbar.tools:	prevworkspace, workspacename, nextworkspace, iconbar, systemtray, clock
session.screen0.toolbar.alpha:	140
session.screen0.toolbar.placement:	TopCenter
session.screen0.toolbar.visible:	true
session.screen0.toolbar.layer:	Dock
session.screen0.toolbar.height:	0
session.screen0.toolbar.autoHide:	false
session.screen0.toolbar.maxOver:	false
session.screen0.toolbar.onhead:	1
session.screen0.tabs.usePixmap:	true
session.screen0.tabs.maxOver:	false
session.screen0.tabs.intitlebar:	true
session.screen0.tab.placement:	TopLeft
session.screen0.tab.width:	30
session.screen0.tabFocusModel:	ClickToTabFocus
session.screen0.autoRaise:	true
session.screen0.showwindowposition:	false
session.screen0.antialias:	true
session.screen0.workspacewarping:	true
session.screen0.noFocusWhileTypingDelay:	0l
session.screen0.strftimeFormat:	%k:%M
session.screen0.focusModel:	ClickFocus
session.screen0.clickRaises:	true
session.screen0.workspaceNames:	#1,#2,#3,#4,#5,#6,#7,#8,
session.screen0.allowRemoteActions:	false
session.screen0.workspaces:	8
session.screen0.maxIgnoreIncrement:	false
session.screen0.menuDelay:	200
session.screen0.rowPlacementDirection:	LeftToRight
session.screen0.demandsAttentionTimeout:	500
session.screen0.windowPlacement:	RowMinOverlapPlacement
session.screen0.tooltipDelay:	500
session.screen0.maxDisableMove:	false
session.screen0.focusNewWindows:	true
session.screen0.fullMaximization:	false
session.screen0.opaqueMove:	false
session.screen0.windowMenu:	/home/mic/.fluxbox/windowmenu
session.screen0.defaultDeco:	NORMAL
session.screen0.colPlacementDirection:	TopToBottom
session.screen0.edgeSnapThreshold:	10
session.screen0.maxDisableResize:	false
session.tabPadding:	0
session.slitlistFile:	~/.fluxbox/slitlist
session.styleFile:	/home/mic/.fluxbox/styles/ColorFlux_Dust_mic
session.configVersion:	13
session.autoRaiseDelay:	250
session.ignoreBorder:	false
session.keyFile:	~/.fluxbox/keys
session.appsFile:	~/.fluxbox/apps
session.doubleClickInterval:	250
session.tabsAttachArea:	Window
session.colorsPerChannel:	4
session.cacheLife:	5l
session.menuFile:	~/.fluxbox/menu
session.styleOverlay:	~/.fluxbox/overlay
session.cacheMax:	200l
session.forcePseudoTransparency:	true

~/.fluxbox/apps

I added this so you can see how fluxbox han­dles the automag­i­cal posi­tion­ing of apps/windows. You don’t have to edit it (though you can of course), as all set­tings are usu­ally done from the tool­bar of the app.

[app] (name=fbrun)
  [Position]	(CENTER)	{0 0}
  [Layer]	{2}
[end]
[app] (name=xawtv) (class=Xawtv)
  [Workspace]	{0}
  [Dimensions]	{479 372}
  [Position]	(UPPERLEFT)	{1413 674}
  [Sticky]	{no}
  [Layer]	{6}
[end]
[app] (name=Navigator) (class=Firefox) (role=browser)
  [Workspace]	{0}
  [Dimensions]	{785 872}
  [Position]	(UPPERLEFT)	{436 128}
  [Close]	{yes}
[end]
[app] (name=Mail) (class=Thunderbird) (role=3pane)
  [Workspace]	{1}
  [Dimensions]	{1546 1092}
  [Position]	(UPPERLEFT)	{100 22}
  [Close]	{yes}
[end]
[app] (name=gimp-2.7) (class=Gimp-2.7) (role=gimp-image-window)
  [Workspace]	{3}
  [Dimensions]	{1776 912}
  [Position]	(UPPERLEFT)	{71 19}
  [Close]	{yes}
[end]
[app] (name=digikam) (class=Digikam) (role=Digikam)
  [Workspace]	{6}
  [Dimensions]	{1798 1106}
  [Position]	(UPPERLEFT)	{28 17}
[end]

~/.fluxbox/keys

This one is impor­tant, as it holds all the power :)
Notice the lines 5/6, as they allow you to shade/unshade win­dows by using the mouse-wheel (like in open­box e.g.).

! fluxbox-update_configs added '(workspace=[current])' to (Next|Prev)(Window|Group)
! check lines marked by 'FBCV13' if they are correctly updated
!mouse actions added by fluxbox-update_configs
OnTitlebar Mouse1 :MacroCmd {Focus} {Raise} {ActivateTab}
OnTitlebar Mouse4 :Shade
OnTitlebar Mouse5 :Shade
!mouse actions added by fluxbox-update_configs
OnTitlebar Move1 :StartMoving
OnLeftGrip Move1 :StartResizing bottomleft
OnRightGrip Move1 :StartResizing bottomright
OnWindowBorder Move1 :StartMoving

# click on the desktop to get menus
OnDesktop Mouse1 :HideMenus
OnDesktop Mouse2 :WorkspaceMenu
OnDesktop Mouse3 :RootMenu

# scroll on the desktop to change workspaces
OnDesktop Mouse4 :P revWorkspace
OnDesktop Mouse5 :NextWorkspace

# scroll on the toolbar to change current window
OnToolbar Mouse4 :P revWindow {static groups} (workspace=[current])  (iconhidden=no) !! FBCV13 !!
OnToolbar Mouse5 :NextWindow {static groups} (workspace=[current])  (iconhidden=no) !! FBCV13 !!

# alt + left/right click to move/resize a window
OnWindow Mod1 Mouse1 :MacroCmd {Raise} {Focus} {StartMoving}
OnWindowBorder Move1 :StartMoving

OnWindow Mod1 Mouse3 :MacroCmd {Raise} {Focus} {StartResizing NearestCorner}
OnLeftGrip Move1 :StartResizing bottomleft
OnRightGrip Move1 :StartResizing bottomright

# alt + middle click to lower the window
OnWindow Mod1 Mouse2 :Lower

# control-click a window's titlebar and drag to attach windows
OnTitlebar Control Mouse1 :StartTabbing

# double click on the titlebar to shade
OnTitlebar Double Mouse1 :Shade

# left click on the titlebar to move the window
OnTitlebar Mouse1 :MacroCmd {Raise} {Focus} {ActivateTab}
OnTitlebar Move1  :StartMoving

# middle click on the titlebar to lower
OnTitlebar Mouse2 :Lower

# right click on the titlebar for a menu of options
OnTitlebar Mouse3 :WindowMenu

# alt-tab
Mod1 Tab :NextWindow {groups} (workspace=[current])  (workspace=[current]) !! FBCV13 !!
Mod1 Shift Tab :P revWindow {groups} (workspace=[current])  (workspace=[current]) !! FBCV13 !!

# cycle through tabs in the current window
Mod4 Tab :NextTab
Mod4 Shift Tab :P revTab

# go to a specific tab in the current window
Mod4 1 :Tab 1
Mod4 2 :Tab 2
Mod4 3 :Tab 3
Mod4 4 :Tab 4
Mod4 5 :Tab 5
Mod4 6 :Tab 6
Mod4 7 :Tab 7
Mod4 8 :Tab 8
Mod4 9 :Tab 9

# open a terminal
Mod1 F1 :Exec xterm

# open a dialog to run programs
Mod1 F2 :Exec gmrun

# volume settings, using common keycodes
# if these don't work, use xev to find out your real keycodes
176 :Exec amixer sset Master,0 1+
174 :Exec amixer sset Master,0 1-
160 :Exec amixer sset Master,0 toggle

# current window commands
Mod1 F4 :Close
Mod1 F5 :Kill
Mod1 F9 :Minimize
Mod1 F10 :Maximize
Mod1 F11 :Fullscreen

# open the window menu
Mod1 space :WindowMenu

# exit fluxbox
Control Mod1 Delete :Exit

# change to previous/next workspace
Control Mod1 Left :P revWorkspace
Control Mod1 Right :NextWorkspace

# send the current window to previous/next workspace
Mod4 Left :SendToPrevWorkspace
Mod4 Right :SendToNextWorkspace

# send the current window and follow it to previous/next workspace
Control Mod4 Left :TakeToPrevWorkspace
Control Mod4 Right :TakeToNextWorkspace

# change to a specific workspace
Control F1 :Workspace 1
Control F2 :Workspace 2
Control F3 :Workspace 3
Control F4 :Workspace 4
Control F5 :Workspace 5
Control F6 :Workspace 6
Control F7 :Workspace 7
Control F8 :Workspace 8
Control F9 :Workspace 9
Control F10 :Workspace 10
Control F11 :Workspace 11
Control F12 :Workspace 12

# send the current window to a specific workspace
Mod4 F1 :SendToWorkspace 1
Mod4 F2 :SendToWorkspace 2
Mod4 F3 :SendToWorkspace 3
Mod4 F4 :SendToWorkspace 4
Mod4 F5 :SendToWorkspace 5
Mod4 F6 :SendToWorkspace 6
Mod4 F7 :SendToWorkspace 7
Mod4 F8 :SendToWorkspace 8
Mod4 F9 :SendToWorkspace 9
Mod4 F10 :SendToWorkspace 10
Mod4 F11 :SendToWorkspace 11
Mod4 F12 :SendToWorkspace 12

# send the current window and change to a specific workspace
Control Mod4 F1 :TakeToWorkspace 1
Control Mod4 F2 :TakeToWorkspace 2
Control Mod4 F3 :TakeToWorkspace 3
Control Mod4 F4 :TakeToWorkspace 4
Control Mod4 F5 :TakeToWorkspace 5
Control Mod4 F6 :TakeToWorkspace 6
Control Mod4 F7 :TakeToWorkspace 7
Control Mod4 F8 :TakeToWorkspace 8
Control Mod4 F9 :TakeToWorkspace 9
Control Mod4 F10 :TakeToWorkspace 10
Control Mod4 F11 :TakeToWorkspace 11
Control Mod4 F12 :TakeToWorkspace 12

Have fun! And if you have ques­tions, feel free to ask. I’m not an expert, but I’ll try to help.

Digikam lacks an important feature

Dur­ing my tests with Digikam (1.5, svn) and I came across the first prob­lems. Until now I had been test­ing the var­i­ous editing-operations and some Kipi-Plugins — but not exported any­thing for us on Deviantart, Flickr, whatever…

Now I found out that obvi­ously it is not pos­si­ble either in Digikam or with any of the Kipi-plugins to change lpi/dpi of a photo. You can only manip­u­late the size by either px or %. BTW: Dark­table (0.6.1, git) can’t either…

Cor­rect me if I’m wrong.

Now, I have been cor­rected. The func­tion­al­ity  is there, as one of the devel­op­ers, Gilles Caulier, has pointed out.

BUT: It is hid­den deep down in the addi­tional options of the prepare-to-print-dialogue, which is the fourth choice of a dropdown-menu of the resize-dialogue. Well hid­den. Go figure.

For the sake of use­abil­ity I filed a wish on Bugzilla and Gilles announced, this would be changed soon. Which is good! ;)

EDIT after some more tests: Well, what Digikam does in the prepare-to-print-dialogue is not quite what I was talk­ing about. I do not want my pho­tos to be forced/cropped into one of the offered for­mats, 10x15, 9x13 etc., nor do I want them to be stretched — read: dis­torted -, which is another option there. I sim­ply want to be able to change the den­sity and option­ally the size with­out touch­ing the aspect ratio — prefer­ably in one step. Just like the tools from the imagemagick-suite han­dle it. I don’t think I’m ask­ing for too much. Digikam sure is a  great appli­ca­tion, but there is noth­ing on earth that could not be improved. ;)

Thus the fol­low­ing hint remains valid nonethe­less, as it is use­ful anyway…

For the time being I help myself with an action for the file­m­an­ager, that calls a script with the nec­es­sary com­mands for “con­vert” and/or “mogrify” from the imagemagick-suite. But this means that I have to inter­rupt my work­flow, leave Digikam and go back.

Now, maybe some­one is inter­ested in how I con­vert files from witin the file­m­an­ager (dolphin/konqueror). This is the solution:

Cre­ate a textfile named xyxyxyx.desktop in ~/.kde4/share/kde4/services. Mine are called convert_1000.desktop and convert_800.desktop — you get the idea…

[Desktop Entry]
MimeType=image/*
ServiceTypes=KonqPopupMenu/Plugin
Type=Service
Actions=reSize_1000_72
[Desktop Action reSize_1000_72]
Name=Skalieren auf 1000px 72dpi 75%
Icon=/usr/share/icons/default.kde4/32x32/actions/transform-scale.png
Exec=for i in %U; do convert $i -resize 1000x1000 -density 72 -quality 75 $(echo $i | cut -f1 -d".").jpg && kdialog --title "Resize" --passivepopup "$i wurde bearbeitet" 5; done
Terminal=false

The line with exec= looks a bit com­pli­cated, but it makes sure that
a) the action is applied to all files marked in the file­m­an­ager and
b) that for exam­ple a raw file with the end­ing .CR2 can be saved as .jpg after converting.

Notice that I use ‘con­vert’ and not ‘mogrify’, as the lat­ter will over­write the orig­i­nal input-file, whereas the for­mer always requires an output-file. So you are on the safe side.

The rest should be self-explaining. You can change the val­ues accord­ing to your needs and save xyxyxyx.desktop as a new file. Or you cre­ate sev­eral of them for var­i­ous for­mats and always have them at hand on right-click. Should be easy…

ps. Oh, and don’t worry that your photo might be stretched or com­pressed to the given value (800x800 or 1000x1000). This only means that the respec­tive longest side will be processed…

Photo-Workflow in Linux with Digikam

Well, this is not for Digikam alone.

You should con­sider this as a guide­line on how you can orga­nize your dig­i­tal pho­tos in Linux (and the other one as well ;) ) I am far from say­ing that this is the only way to do it, but I can assure you that it works and has proven to be efficient.

Some peo­ple copy their files from the cam­era or the chip to a folder on the hard­drive — and that’s it. Some even don’t bother to work on copies of their orig­i­nal pho­tos and alter the orig­i­nals directly. To do that you must be either very good — or very stu­pid, because every mis­take is fatal. And if you don’t apply non-destructive pro­ce­dures there is no way back. Never.

But even if you have learnt the hard way that copies and back­ups (on exter­nal dri­ves prefer­ably) are good, you may won­der how to orga­nize your pos­si­bly grow­ing col­lec­tion. If you don’t take more than 10 shots a year, don’t waste your time, but if you shoot a lot more, please read on.

This is not going to be a tuto­r­ial on man­ag­ing tags and key­words and Exif– and IPTC-data. I just decribe my way of orga­niz­ing my files on filesystem-level. This is only the first step. Of course I also tag my files and use the var­i­ous tools in Digikam to sort, select, gather pho­tos by dif­fer­ent cri­te­ria. But even if I did not have these, I’d still be able to find quickly what I am look­ing for.

Three things are important:

1. I keep my raw data apart from the work-data. I even have them on phys­i­cally dif­fer­ent dri­ves, so that in case on HD kicks the bucket, the other files are not con­cerned. I make sep­a­rate back­ups of them.

2. I keep the sql-database of Digikam apart from both the raw-files and the work-files and do not save it on the same drive. I make a sep­a­rate backup of it as well.

3. Once my raw pho­tos are copied to a disk, they are untouch­able. I always work with copies.

Yes, this means that I “waste” some space on my hard­drives. But hey, if there is one thing that has become really cheap, it is disk-space. And redun­dancy is your friend. It means safety.

SESO! Save early, save often!

— Me

Also I like to sort my files not only by year/date, which is suf­fi­cient for the orig­i­nals, but addi­tion­ally by the intended use: web, print  etc., as this also deter­mines, in which size/resolution/fileformat I save them. Again this means that sev­eral vari­a­tions of a file exist side by side — but in dif­fer­ent sub­fold­ers. It makes sense, as for exam­ple the gallery in my blog requires a dif­fer­ent width/height than that on Deviantart or Flickr. For some I add frames, for oth­ers not. And of course prints need a  much higher resolution/dpi than pic­tures for mere web-use. You get the idea…

To make the han­dling in Digikam eas­ier, I pre­fer not to main­tain one big col­lec­tion with all files in it, but cre­ate sev­eral collections/albums accord­ing to what the pho­tos are used for.

Sounds com­pli­cated? It isn’t, I assure you. The fol­low­ing dia­gram should be easy to read and understand.

Don’t worry, if you use the import-tool of Digikam to down­load the files from your cam­era, it can cre­ate all nec­es­sary folders/subfolders for you auto­mat­i­cally. Really easy.

ps. When I used the term “raw”, I did not only think of unedited pho­tos, but had the tech­ni­cal for­mat of the files from your cam­era in mind. If it allows you to I urge you to set your cam­era to raw-mode and not rely on jpg. Yes, the indi­vid­ual file will be a lot larger and it takes addi­tional steps to edit them, but the results are worth it. Think of a raw-file as a “neg­a­tive” like in the good old days. It con­tains all the data avail­able — and not only those an engi­neer from your camera-factory thinks to be necessary.

Ques­tions? Feel free to ask…

Linux and photography

For many years pho­tog­ra­phy and linux have not been the best friends. But it seems, as if this has changed.

This week I did some­thing which seemed impos­si­ble until now. I kicked Windows.

No more XP/64, no more 7/64. Go figure.

DigiKam 1.4

Finally there are linux-replacements for the have-to-have-apps like Adobe PS and LR. Now I use Digikam (cur­rently 1.4, see screen­shot above) to manage/edit all my pho­tos, Gimp (2.7, devel) as addi­tional editing-software and also Krita, which has some poten­tial. And the Kipi-plugins are a real time-saver for re-occuring tasks.

The 8-bit-barrier has been over­come by Digikam and Krita, which both can han­dle 16-bit-files. And I am sure that it is only a ques­tion of time, until Gimp can too. This was a big step ahead. Also the han­dling of RAW-files has become very easy — as well as imple­ment­ing color-profiles. Now I can say, that there is hardly a rea­son — at least for even ambi­tious ama­teurs — to shell out lots of money for com­mer­cial prod­ucts. On a side­note: This is also true for video-editing. My rec­om­men­da­tion: KDEnlive…

Dur­ing the years I had many linux-distributions on my HD, but there is one that I always come back to. So… there must be a rea­son ;) It is Arch/64.  Hard to beat speed-wise and there are tons of fresh apps for any pur­pose you can think of.

If you want an overview on what the alter­na­tives for bread-and-butter-apps on win­dows are, I sug­gest that you have a look at this site.

ps. When I said, there is no more win­dows, this was not all true. I still run xp/32 in a vir­tual machine even­tu­ally, as there is one pro­gram I could not replace: Nokia PC Suite. I need it to sync my mobile phone. But this is easy and works well.

In case you’re interested…

- Very com­pre­hen­sive arti­cle by Nathan Willis

DIY — Mamiya RB67 lug and strap

I am not exactly miserly, but I hate when I am expected to pay a lot of money for things that are not worth it. For exam­ple my used Mamiya RB67 came with­out a strap, and even it is is mounted to a tri­pod most of time a strap would be nice to have. But the ones you can get on ebay are too expen­sive IMHO — around 40 €.

So I had a closer look at the fit­tings on the cam­era and decided to tin­ker a lug myself. I used a 25mm mount­ing angle. It already had two holes. I drilled one a lit­tler larger for the cara­biner and filed the other to the shape of a key­hole, the smaller part with the diam­e­ter of the inner fit­ting. I made it a tad smaller, so that it sits tight on the fit­ting and doesn’t slide up and down — which could end dra­matic. Then I bent the upper part 90° upward and ground the cor­ners — finished.

Because I don’t want the cara­biner scratch on the edge of the cam­era, I slaugh­tered a small key-pocket made of leather and cut two flaps as spac­ers. Per­fect ;)

ps. Might work with other cam­eras with a sim­i­lar fit­ting as well!

Enhance WP-theme Autofocus+

 

This info is dep­re­cated, since AF+ now does not rely on The­matic anymore.

… and comes with a sam­ple child-theme of its own, which I highly rec­om­mend to use!!

The updated HowTo is here. Yes, it is still nec­es­sary!

As you can see on the front­page, I am using aut­o­fo­cus+ Pro for this blog. I got it today and started to add some con­tent and pimp it to my lik­ings. And I stum­bled into a lit­tle prob­lem that seems hard to solve but actu­ally isn’t.

The theme has a cou­ple of options. One of them is that you can define a tem­plate for a blog page. But: You can only pick just one cat­e­gory that is used for this spe­cial page. If you want to use the blog-template for another page which only holds arti­cles with a dif­fer­ent cat­e­gory — in my case the KnowHow-page — you are stuck.

So what to do?

You could ask the author of the theme for help. Pro or not Pro-version (paid or not paid), he will point you to — yes, right — google, in order to find solu­tions for cre­at­ing your own tem­plates. You can do that of course — or read on…

Yeah ‚theres tons of expla­na­tions for that.Try googling it.

— Allan Cole

I solved the prob­lem myself the fol­low­ing way.

I copied the blog-template.php from the theme. Best is to down­load it with a ftp-client (I use the client inte­grated in Total­com­man­der). Then rename the file to a mean­ing­ful name. For exam­ple, if the page you are going to use it for, is called “Design”, name it design-template.php.

Edit the renamed file with an edi­tor of your choice (I rec­om­mend notepad++) and change the name of the tem­plate in line 3 to Design Tem­plate (or what­ever you want it to be).

!! If you miss this step, the tem­plate will never appear in the dropdown-menu on the right when you edit/create a page.

Look for a line that looks like this

$af_blog_catid = get_cat_ID($af_blog_cat);

and change it to

$af_blog_catid = 19;

!! whereas 19 is the ID of the cat­e­gory I use for the given page. For you the num­ber may dif­fer! This means you have to cre­ate this cat­e­gory first. You can see the ID (the num­ber) in the bot­tom left cor­ner of your browser, when you hover over the cat­e­gory in the category-menu (this is use­ful for many purposes!).

Upload the new tem­plate to the theme-directory on your webspace.

Then you cre­ate the new page called Design (or what­ever) and attach the appro­pri­ate tem­plate (e.g. design-template) to it. On this page only arti­cles with the defined category-ID will appear.

Nifty ;)

And in case you want to cre­ate another page for another cat­e­gory of arti­cles sim­ply repeat the same steps (down­load, copy, rename, find out the category-ID, edit, upload, assign to new page …) and you’re done.

Oh, and this should work as well for the free ver­sion of the autofocus+-theme.