Notes on downloading and preparing photographs (For SCSI card reader) The reader described here is the SanDisk "ImageMate 6 in 1" Reader/Writer. Information on the web indicates that "all" such devices operate in generally the same way. However, readers with multiple slots have an important difference from single-slot readers: the kernel must be compiled with CONFIG_SCSI_MULTI_LUN=y. (In configuration dialog, SCSI menu, "make drivers probe all LUNs on each device".) For SuSE at least, look in /boot/vmlinuz.config; it is turned on in the generic kernel. Eject the memory card from the camera and insert it in the correct slot of the card reader. The face of the reader with the SanDisk logo is "up". The label side of the card should be up. For SmartMedia, the gold-plated side of the card goes up. Slots: (top) (CompactFlash) CF (Sony Memory Stick) MS (SmartMedia) SM (MultiMediaCard) SD-MMC CompactFlash type I and II can be used. SecureData cards go in the MMC slot. It is possible to load multiple cards at once (different types, in their respective slots). These same instructions work for a digital camera with generic USB storage capability, such as the Olympus Stylus 400. With the card out of the reader, plug the USB cable into the CPU. (It also works with the card in the reader or camera but all the messages come out at once and are more confusing.) You should see about 120 lines of verbose chatter in syslog, of which these are the important parts: hub.c: new USB device 00:1d.0-1, assigned address N scsi0 : SCSI emulation for USB Mass Storage devices Vendor: SanDisk Model: ImageMate 6 in 1 (repeated for each slot) WARNING: USB Mass Storage data integrity not assured (ignore this) Attached scsi removable disk sda at scsi0, channel 0, id 0,lun 0 (for each slot) sda : READ CAPACITY failed (bitch, bitch, each slt) Now insert the card. Unfortunately the disc change is not recognized immediately -- it may be polled with a long repeat time, or it may only happen when you try to access the media. Determine (guess) which SCSI unit has the media: here it's /dev/sda. The flash card has one partition (number 1) and 99.9% of cameras put a vfat filesystem on it. Use this command line (as root) to mount it: mount -t vfat -o umask=0 /dev/sda1 /mnt Alternatively put this in your /etc/fstab, make the mount point (here /media/sda1, which is what hotplug likes), and just "mount /dev/sda1". /dev/sda1 /media/sda1 vfat noauto,user,rw,uid=228,gid=100,umask=0 0 0 For some unknown reason the default umask came out as 033, so only root can traverse the directories. One could also say uid=(numeric UID) instead of setting the umask, but umask=0 emulates MSDOS more authentically. It is said that the hotplug subsystem will mount the media automatically, but I don't see that happening (on SuSE 8.2 and 9.1). SuSE 9.2 has their act together. The procedure is: Plug in the reader or camera's USB cable. ls /media -- it ended up mounted on /media/usb-133587565:0:0:0p1 cd to that directory, then cd dcim/100olymp (or other dir with camera name) cp *.jpg /somewhere/else cd (to homedir or anywhere but the camera filesystem) eject /media/usb-133587565:0:0:0p1 -- unmounts vfat and subfs mounts Unplug the USB cable. It's recommended to "cd" to the camera filesystem and copy outward, rather than sitting in another directory and working with the files one at a time, because subfs mounts the real filesystem when accessed, polls it, and unmounts it within 1 second of non-use. The repeated mounts are a pain in the butt, particularly since VFAT and UTF-8 don't mix and it bitches in syslog. If mounting fails (mount: special device /dev/sda1 does not exist), try it once more. There may be a contingency about module loading, recognizing the disc change, etc. that does not go smoothly. The second time it should mount with no error message. Look for this in syslog: VFS: Disk change detected on device 08:00 SCSI device sda: 62720 512-byte hdwr sectors (32 MB) Now find your images. For the Kodak DC280 camera, they are in: /media/sda1/dcim/100dc280/dcp_*.jpg Make a directory for the images. Recommended is ~/images/$topic/orig (the edited images will end up in ~/images/$topic). cd to that directory, and just copy all the images over. Speed (with USB 1.1): about 0.5 MB/sec. It took about 60 secs on Linux and possibly 40 secs on Windows. When finished, "umount /dev/sda1" (very important), then remove the card, put it back in the camera, and unplug the reader. You could delete the image files before unmounting but I prefer to do it when all image manipulation is finished, in case I mess it up. The images are downloaded under their names as found on the camera, which are similar to DCP_0685.JPG, with the camera-generated absolute sequence number. Full size images vary in size but 120-150 Kb is typical. Now make an index of the images. It will help to use the format: filename (tab) description. Use this command line to review the images: display -geometry 640x480 -resize 640x480 *.jpg Space -> next image, BackSpace -> previous image, ^Q to quit (plus numerous other keyboard and menu commands). Fill in the descriptions, which you will eventually put in the index.html file. Then edit a copy of the index into a script of "mv" commands to organize the images semantically. The convention is to pick descriptive words for categories, such as wedding, dance, dinner, cake, to be followed by a number (padded with 0 if more than 9 images in the category, so you can sort them). Groups of 4 fit best in the standard index format. For example: mv -i DCP_0685.JPG wedding-1.jpg Make a directory "orig" and move all the jpeg files into it. Then: cd orig foreach f (*.jpg) cp $f ../${f:r}e.jpg end (The ending "e" stands for "edited".) This gives names like wedding-1e.jpg. Use gimp to edit the images. You need to shrink the "e" image to 768x500 (to fit comfortably in a browser on a 800x600 screen), and then shrink it again to give a thumbnail image of 180x135 (so four will fit across the screen). The thumbnail is named by changing "e" to "t". Do any jiggering after shrinking to 768x500, to save computation. Procedure: Main - File - Open (or ^O), double click on "e" file. It opens in a new window. (Right click) - Tools - Crop - (or hit the knife thingy in the main panel). Drag out a rectangle with the left button; adjust by dragging the corner boxes. Hit "Crop" in the dialog box to do it. (Right click) - Image - Scale - enter width 768 (pixels) for a wide image or 500 for a high one. (An uncropped image scales to 768x509.) (Right click) - File - Save (or ^S) to save the image. Take defaults. Scale it again to thumbnail size. (Right click) - File - Save as; click on the "e" name but change to "t". Close the image window. Alternative method using ImageMagick: "cd" to the containing directory (not orig). foreach fo (orig/*.jpg) set f = $fo:t:r echo $f mogrify -resize 768x500 jpeg:- < $fo > ${f}e.jpg mogrify -resize 180x135 jpeg:- < $fo > ${f}t.jpg end In the containing directory is a file ../index.pl. Copy your notes file again. Arrange the content in the desired order, then remove comments and edit it to say something like this (take the defaults for -t, -c, -d): Making the index file: There are two scripts. For the older one, copy and edit your file list into something like this: $HOME/images1/bin/index.pl \ -h '%t
' \ wedding-5e.jpg wedding-5t.jpg \ wedding-3e.jpg wedding-3t.jpg \ etc. etc. Then: sh filename > index.html For the newer script, edit the file list into a format like: wedding-5e.jpg wedding-5t.jpg Walking Down the Aisle Then: sort filelist | $HOME/images1/bin/index2.pl > index.html (Assuming the names will sort into the order you want; if not, sort the list manually.) Edit the resulting file adding suitable boilerplate around the content. See any of the index.html files for copy source. Within the content area, the formatting and thumbnail sizes are designed for use in 4-across tables, like this:

The Wedding

(four content units) (more content units -- if you have less than four, fill out with empty cells:)
Command for printing photo-quality stuff: Assuming it is pre-manufactured at 300 px/inch: lpr -Plp-photo -o ppi=300 filename.jpeg