All the Pans fit to be found 2009.11.19

Modified for web, 2009.12.02. See Also: Intro Panorama Page,   old Panorama page,   My Gigapan Page,   All Panoramas,   Boston Panoramas,   Sudbury Panoramas,   ChinaPans (2010)



Shinnecock Inlet
panorama ShinnecockInlet.jpg
ShinnecockInlet.jpg
22200x2471 52.31 MegaPix Ratio: 8.98 6.022 MB 2011.07.30



Sudbury Valley School
Sudbury Valley School
SudburyValleySchool1k.jpg
Half Size 27234×4678 2011.06.11.


All the Pans fit to be found 2009.11.19



Alpha 1
panorama 23Pinewood800.jpg
23Pinewood800.jpg 2721x800 2.08 MegaPix Ratio: 3.40 0.808 MB 2008.11.29.   : OriginalImage...



Alpha 2
panorama 23PinewoodPlanar800.jpg
23PinewoodPlanar800.jpg 2609x800 1.99 MegaPix Ratio: 3.26 0.830 MB 2008.11.30.   : OriginalImage...



Alpha 3
panorama Backyard2.jpg
Backyard2.jpg 1200x543 0.62 MegaPix Ratio: 2.21 0.765 MB 2009.11.01.   : OriginalImage...



Alpha 4
panorama BakeryEvening.jpg
BakeryEvening.jpg
3000x1014 2.90 MegaPix Ratio: 2.96 1.183 MB 2009.10.29.   : OriginalImage...



Alpha 5
panorama bedroomWindow.jpg
bedroomWindow.jpg 2400x1024 2.34 MegaPix Ratio: 2.34 1.231 MB 2009.10.28.   : OriginalImage...



Alpha 6
panorama BlueHillObservatory2008.jpg
BlueHillObservatory2008.jpg
29970x3019 86.29 MegaPix Ratio: 9.93 42.017 MB 2008.12.31.   : OriginalImage... stitched with PhotoShop, then uploaded to GigaPan



Alpha 7
panorama BostonBeaconHill.jpg
BostonBeaconHill.jpg 22310x5009 106.57 MegaPix Ratio: 4.45 34.075 MB 2009.10.31.   : OriginalImage...stitched with PhotoShop, then uploaded to GigaPan



Alpha 8
panorama BostonConventionCenter.jpg
BostonConventionCenter.jpg 21100x3523 70.89 MegaPix Ratio: 5.99 9.236 MB 2009.11.12.   : OriginalImage... GigaPan



Alpha 9
panorama Cabana.jpg
Cabana.jpg 26833x6487 166.00 MegaPix Ratio: 4.14 50.205 MB 2009.11.03.   : OriginalImage...



Alpha 10
panorama CHPan2008_x800.jpg
CHPan2008_x800.jpg
4804x800 3.67 MegaPix Ratio: 6.00 0.861 MB 2008.11.09.   : OriginalImage...



Alpha 11
panorama CorneliusRoom.jpg
CorneliusRoom.jpg 23363x16051 357.63 MegaPix Ratio: 1.46 34.197 MB 2009.08.04.   : OriginalImage... GigaPan



Alpha 12
panorama DorchesterHeights1.jpg
DorchesterHeights1.jpg 26548x3435 86.97 MegaPix Ratio: 7.73 17.413 MB 2009.11.10.   : OriginalImage... GigaPan



Alpha 13
panorama DorchesterHeights2.jpg
DorchesterHeights2.jpg 10517x3672 36.83 MegaPix Ratio: 2.86 5.326 MB 2009.11.10.   : OriginalImage...



Alpha 14
panorama FirstBridgeSunset.jpg
FirstBridgeSunset.jpg 12000x2753 31.51 MegaPix Ratio: 4.36 6.641 MB 2009.11.01.   : OriginalImage...



Alpha 15
panorama FirstBridgeSunset2.jpg
FirstBridgeSunset2.jpg 21513x4680 96.02 MegaPix Ratio: 4.60 28.525 MB 2009.11.01.   : OriginalImage...



Alpha 16
panorama FirstParish2008.jpg
FirstParish2008.jpg 13537x8295 107.09 MegaPix Ratio: 1.63 22.732 MB 2009.11.10.   : OriginalImage...



Alpha 17
panorama FPSsteeple04.jpg
FPSsteeple04.jpg
9450x1148 10.35 MegaPix Ratio: 8.23 7.957 MB 2006.04.11.   : OriginalImage - from 4x6 print, then scanned, then stitched by hand for many, many, many hours.
From the First Parish steeple after a freezing rain storm. January 2004 Hi-Res < > Google Earth KMZ for Sudbury Panoramas



Alpha 18
panorama GustafsonOgren2005.jpg
GustafsonOgren2005.jpg
9774x1536 14.32 MegaPix Ratio: 6.36 11.447 MB 2005.11.05.   : OriginalImage... stitched by hand



Alpha 19
panorama HudsonRoadMerge800.jpg
HudsonRoadMerge800.jpg 3223x800 2.46 MegaPix Ratio: 4.03 0.889 MB 2008.11.30.   : OriginalImage...



Alpha 20
panorama HudsonRoadPlanar800.jpg
HudsonRoadPlanar800.jpg 2602x800 1.99 MegaPix Ratio: 3.25 0.701 MB 2008.11.30.   : OriginalImage...



Alpha 21
panorama IrishPan.jpg
IrishPan.jpg 10277x1716 16.82 MegaPix Ratio: 5.99 8.535 MB 2008.10.29.   : OriginalImage...



Alpha 22
panorama LivingRoomWithIrie.jpg
LivingRoomWithIrie.jpg 22798x3515 76.42 MegaPix Ratio: 6.49 9.110 MB 2009.11.10.   : OriginalImage... GigaPan



Alpha 23
panorama LouvrePanorama.jpg
LouvrePanorama.jpg
20052x2520 48.19 MegaPix Ratio: 7.96 25.841 MB 2008.05.16.   : OriginalImage... used Panorama feature in camera. Some patching by hand because I did not keep the horizon line even.
The Louvre in Paris! Gail is in front of the little Arch and you can see 'Arc de Triomphe thru it. The Hi-Res is also at GigaPan < > KMZ



Alpha 24
panorama MenotomyRocksPark04.jpg
MenotomyRocksPark04.jpg
2453x925 2.16 MegaPix Ratio: 2.65 0.353 MB 2008.05.21.   : OriginalImage... Cornelius took this mini panorama of Boston from the playground up the hill from Menotomy Rocks Park in Belmont.



Alpha 25
panorama MiddlesexFels.jpg
MiddlesexFels.jpg
25635x3787 92.58 MegaPix Ratio: 6.77 19.783 MB 2009.11.10.   : OriginalImage... GigaPan



Alpha 26
panorama MinneapolisFromMoms.jpg
MinneapolisFromMoms.jpg
9480x1000 9.04 MegaPix Ratio: 9.48 3.727 MB 2006.10.16.   : OriginalImage...



Alpha 27
panorama mplspanextra6000.jpg
mplspanextra6000.jpg
6000x1706 9.76 MegaPix Ratio: 3.52 1.899 MB 2006.10.16.   : OriginalImage...



Alpha 28
panorama NobscotPanorama2008.jpg
NobscotPanorama2008.jpg
21907x1897 39.63 MegaPix Ratio: 11.55 7.678 MB 2008.09.04.   : OriginalImage...



Alpha 29
panorama NorthBridge2d.jpg
NorthBridge2d.jpg
3000x1364 3.90 MegaPix Ratio: 2.20 2.259 MB 2009.10.28.   : OriginalImage...



Alpha 30
panorama OneRiverMissippippi.jpg
OneRiverMissippippi.jpg
19760x1504 28.34 MegaPix Ratio: 13.14 6.020 MB 2006.06.28.   : OriginalImage...



Alpha 31
panorama OrientPointFerry.jpg
OrientPointFerry.jpg
29823x3490 99.26 MegaPix Ratio: 8.55 40.069 MB 2009.10.27.   : OriginalImage... GigPan



Alpha 32
panorama PineCopse.jpg
PineCopse.jpg
28893x5167 142.37 MegaPix Ratio: 5.59 25.323 MB 2009.11.10.   : OriginalImage... GigaPan



Alpha 33
panorama PompyPan.jpg
PompyPan.jpg
11685x1776 19.79 MegaPix Ratio: 6.58 10.963 MB 2008.05.19.   : OriginalImage...



Alpha 34
panorama PonQPanWest.jpg
PonQPanWest.jpg
18703x1608 28.68 MegaPix Ratio: 11.63 5.166 MB 2007.08.16.   : OriginalImage...



Alpha 35
panorama PonQsouthEastInlet.jpg
PonQsouthEastInlet.jpg
12884x2018 24.80 MegaPix Ratio: 6.38 15.378 MB 2007.08.15.   : OriginalImage...



Alpha 36
panorama PonquoguePan07.jpg
PonquoguePan07.jpg
24249x819 18.94 MegaPix Ratio: 29.61 4.567 MB 2007.09.09.   : OriginalImage...



Alpha 37
panorama PontAlmaTest.jpg
PontAlmaTest.jpg
8380x900 7.19 MegaPix Ratio: 9.31 3.573 MB 2008.05.19.   : OriginalImage...



Alpha 38
panorama PortDeBuci7200.jpg
PortDeBuci7200.jpg
7200x787 5.40 MegaPix Ratio: 9.15 1.230 MB 2008.05.19.   : OriginalImage...



Alpha 39
panorama ProspectHillAfterLeaves.jpg
ProspectHillAfterLeaves.jpg
3890x800 2.97 MegaPix Ratio: 4.86 0.740 MB 2009.11.10.   : OriginalImage... GigaPan



Alpha 40
panorama ProspectHillALBoston.jpg
ProspectHillALBoston.jpg
13372x1963 25.03 MegaPix Ratio: 6.81 4.414 MB 2009.11.10.   : OriginalImage...



Alpha 42
panorama QuantuckBay.jpg
QuantuckBay.jpg
10395x978 9.70 MegaPix Ratio: 10.63 7.282 MB 2005.01.30.   : OriginalImage...



Alpha 45
panorama QuogueVillageBeach.jpg
QuogueVillageBeach.jpg
16724x5144 82.04 MegaPix Ratio: 3.25 39.247 MB 2009.11.20.   : Original image...



Alpha 43
panorama QuantuckBayFromRogers.jpg
QuantuckBayFromRogers.jpg
6080x1873 10.86 MegaPix Ratio: 3.25 3.448 MB 2009.07.17.   : OriginalImage...



Alpha 44
panorama QuantuckDunes.jpg
QuantuckDunes.jpg
29237x7265 202.57 MegaPix Ratio: 4.02 75.317 MB 2009.10.31.   : OriginalImage... GigaPan



Alpha 45
panorama RoadPan2008.jpg
RoadPan2008.jpg
4662x1005 4.47 MegaPix Ratio: 4.64 1.766 MB 2009.10.28.   : OriginalImage...



Alpha 46
panorama RogersBeach.jpg
RogersBeach.jpg
3000x696 1.99 MegaPix Ratio: 4.31 1.010 MB 2009.10.28.   : OriginalImage...



Alpha 47
panorama ShadowLawn.jpg
ShadowLawn.jpg
6000x4616 26.41 MegaPix Ratio: 1.30 7.040 MB 2009.10.29.   : OriginalImage...



Alpha 48
panorama ShermansBridge.jpg
ShermansBridge.jpg
18860x2364 42.52 MegaPix Ratio: 7.98 10.297 MB 2009.11.10.   : OriginalImage...



Alpha 49
panorama SunsetShinnecockBay.jpg
SunsetShinnecockBay.jpg
3000x1068 3.06 MegaPix Ratio: 2.81 0.896 MB 2009.10.28.   : OriginalImage...



Alpha 50
panorama TDayPan2008.jpg
TDayPan2008.jpg
3000x827 2.37 MegaPix Ratio: 3.63 0.713 MB 2009.10.28.   : OriginalImage...



Alpha 51
panorama TipplingRockPan.jpg
TipplingRockPan.jpg
24520x3084 72.12 MegaPix Ratio: 7.95 43.247 MB 2008.10.25.   : OriginalImage...



Alpha 52
panorama TourMontparnesseView.jpg
TourMontparnesseView.jpg
4540x1980 8.57 MegaPix Ratio: 2.29 5.282 MB 2008.05.17.   : OriginalImage...



Alpha 53
panorama TownCenter06.jpg
TownCenter06.jpg
9000x990 8.50 MegaPix Ratio: 9.09 3.275 MB 2006.10.09.   : OriginalImage...



Alpha 54
panorama TownCenterFromHosmer.jpg
TownCenterFromHosmer.jpg
3200x979 2.99 MegaPix Ratio: 3.27 1.151 MB 2006.10.15.   : OriginalImage...



Alpha 55
panorama VernalPool.jpg
VernalPool.jpg
12601x4800 57.68 MegaPix Ratio: 2.63 17.700 MB 2009.11.12.   : OriginalImage... GigaPan



Alpha 56
panorama WaysideInn2008.jpg
WaysideInn2008.jpg
27775x4591 121.61 MegaPix Ratio: 6.05 78.505 MB 2009.10.28.   : OriginalImage... GigaPan



Alpha 57
panorama WaysideInnRest.jpg
WaysideInnRest.jpg
18492x4591 80.96 MegaPix Ratio: 4.03 54.582 MB 2009.10.31.   : OriginalImage... GigaPan



Alpha 58
panorama WesthamptonBeachNight.jpg
WesthamptonBeachNight.jpg
15084x3000 43.16 MegaPix Ratio: 5.03 10.414 MB 2009.11.01.   : OriginalImage... GigaPan



Alpha 59
panorama WyndwoldLivingRoom.jpg
WyndwoldLivingRoom.jpg
26423x6954 175.23 MegaPix Ratio: 3.80 41.282 MB 2009.10.26.   : OriginalImage... GigaPan



Alpha 60
panorama WyndwoldMoon1.jpg
WyndwoldMoon1.jpg
6000x4789 27.40 MegaPix Ratio: 1.25 6.279 MB 2009.11.01.   : OriginalImage...



Alpha 61
panorama WyndwoldMoon4.jpg
WyndwoldMoon4.jpg
9000x8055 69.14 MegaPix Ratio: 1.12 15.230 MB 2009.11.01.   : OriginalImage...


mkthpans.py Thu, 19 Nov 2009 03:59:22 +0000
panorama $ emacs ~/Documents/python/mkthpans.py 
panorama $ python ~/Documents/python/mkthpans.py > t1119b.html

#! /usr/bin/env python
# $Header: /Users/jch/zStuff/cvsstuff/cvsroot/python/mkthumbs.py,v 1.5 2007/08/04 03:37:35 jch Exp $

#
# make thumbnails of all of the .jpg files ina directory
#

import sys, os
import Image
import formatter, time, stat

class DefaultOptions:
    size = 300
    
    # if true, just print messages about what the script would be doing
    # but don't actually do anything.
    noop = 0 

    # Print lots of messages
    verbose = 0

    #
    help = 0

    #
    # Some methods
    #

    def print_messages(self):
        return self.verbose or self.noop



options = DefaultOptions()

w1200 = 1200
global thePanCount
thePanCount = 0

def create_directory(dir):
    '''Create the directory dir and its parent directories if necessary'''
    if os.path.isdir(dir):
	return
    parent, base = os.path.split(dir)
    create_directory(parent)
    try:
        if options.print_messages():
            print 'create directory \]s' \] dir
        if not options.noop:
            os.mkdir(dir, 0777)
    except os.error, exc:
        sys.stderr.write([can't create directory \]s:\]s\n[ \] (dir, exc))

def makethumb(jpegfile):
    global thePanCount

    haveTHPan = False
    if os.path.isfile([./thpan1200/[+jpegfile):
        thpanfile = Image.open([./thpan1200/[+jpegfile)
        wid = thpanfile.size[0]
        hgt = thpanfile.size[1]
        haveTHPan = True

    try:
        imfile = Image.open(jpegfile)
        totalPixels = float(imfile.size[0] * imfile.size[1])/(1024*1024);
        ratio = float(imfile.size[0]) / imfile.size[1] 
        if not haveTHPan:
            height = 1200/ratio
            if height > 300:
                hgt = 300
                wid = int(300*ratio)
            else:
                wid = 1200
                hgt = int(height)
    except IOError, iio:
        sys.stderr.write([can't open image \]s reason: \]s\n[ \] (jpegfile,iio))
        return
    except os.error, exc:
        sys.stderr.write([can't create directory \]s:\]s\n[ \] (dir, exc))

    try:
        fstat = os.stat(jpegfile)
        units = [bytes[
        bytes = float(fstat[stat.ST_SIZE])
        if bytes > 1024 and bytes <= 1024*1024:
            bytes = bytes/(1024*1024)
            units = [MB[            
        elif bytes > 1024*1024  and bytes <= 1024*1024*1024:
            bytes = bytes/(1024*1024)
            units = [MB[
        elif bytes > 1024:
            bytes = bytes/(1024*1024*1024)
            units = [GB[
        date = fstat[stat.ST_MTIME]
        timeString = time.strftime([\]Y.\]m.\]d[, time.gmtime(float(date)))
        # print timeString, bytes, units
    except os.error, exc:
        sys.stderr.write([stat error \]s:\]s\n[ \] (jpegpath, exc))
        
    thePanCount += 1
    print [^p>^hr>^br>Alpha \]d^br>^a href=\[\]s\[>^img src=\[thpan1200/\]s\[ width=\[\]d\[ height=\[\]d\[ alt=\[panorama \]s \[ border=\[0\[> ^br> \]s ^/a>[ \] (thePanCount,jpegfile,jpegfile,wid, hgt, jpegfile,jpegfile)

    print [ \]dx\]d \]8.2f MegaPix Ratio: \]6.2f \]8.3f \]s \]s.   : [ \] (imfile.size[0], imfile.size[1], totalPixels, ratio, bytes, units, timeString)
    print [ OriginalImage...[
    sys.stdout.flush()

    if haveTHPan:
        return

    # make thumb of pan
    try:
        imResized = imfile.resize((wid,hgt), Image.ANTIALIAS)
        imResized.save([./thpan1200/[+jpegfile,quality=90)
    except IOError, iio:
        sys.stderr.write([can't open image \]s reason: \]s\n[ \] (jpegfile,iio))
        return
    except os.error, exc:
        sys.stderr.write([can't create directory \]s:\]s\n[ \] (dir, exc))

def check_option(option, value):
    if value is None:
        sys.stderr.write('Value required for option \]s\n' \] option)
        sys.exit(1)

def parse_cmd_line():
    argv = sys.argv[1:]
    for arg in argv:
        if '=' in arg:
            arg, value = split(arg, '=', 1)
        else:
            value = None
        if arg in ('-h', '--help'):
            options.help = 1
        elif arg == '--noop':
            options.noop = 1
        else:
            sys.stderr.write('Unknown option \]s\n' \] arg)

def print_header(curdir):
    print '^!doctype html public [-//w3c//dtd html 4.0 transitional//en[>'
    print [^html>[
    print [^head>[
    print [   ^meta http-equiv=\[Content-Type\[ content=\[text/html; charset=iso-8859-1\[>[
    print [   ^meta name=\[GENERATOR\[ content=\[mkthumbs.py\[>[
    print [   ^meta name=\[Author\[ content=\[YON - Jan C. Hardenbergh\[>[
    print [   ^title>thumbs for \]s^/title>[ \] (curdir)
    print [^/head>[
    print [^body text=\[#000000\[ bgcolor=\[#F8F0FF\[ link=\[#0000EE\[ vlink=\[#551A8B\[ alink=\[#FF0000\[>[
    print [^h1>thumbs for \]s^/h1>[ \] (curdir)

def print_trailer():
    print [^p>^hr>[
    print [mkthpans.py [ + time.strftime([\]a, \]d \]b \]Y \]H:\]M:\]S +0000[, time.gmtime(time.time()))
    print [^/body>[
    print [^/html>[


def print_help():
    dict = opt.__class__.__dict__.copy()
    dict.update(opt.__dict__)
    dict['pyversion'] = sys.version[:3]
    print help_message \] dict
    
help_message = [[[\
usage:
mkthumbs.py [options...]


Options:

        -h, --help

                Print this help message. Do nothing else

        --noop

                Do nothing. Just print messages about what would be
                done.
[[[



def main():
    parse_cmd_line()
    if options.help:
        print_help()
    else:
        create_directory([./thpan1200[)
	print_header(os.path.realpath(os.curdir))
        files = os.listdir(os.curdir)
        for infile in files:
            ext = os.path.splitext(infile)[1]
            if ext == '.jpg' or ext == '.JPG' or ext == '.gif':
                makethumb(infile)
	print_trailer()                


if __name__ == '__main__':
    main()