Project

General

Profile

Download (1.72 KB) Statistics
| Branch: | Tag: | Revision:
#!/opt/local/bin/python2.7
import bz2
import cPickle
import imghdr
import os
import sys

import pHash

from image import Image

# Build index
# TODO: write more schtuff here

def main():

image_list = []

# Make sure at least one command line argument was provided
if len(sys.argv) < 2:
print 'Usage: build_index.py <path>'
return -1;

# Print out the path we're walking
path = sys.argv[1]
print 'Building image index from path: {:s}\n'.format(path)

# Walk the root path and count all images
img_counter = 0
for root, dirs, files in os.walk(path):
for file in files:
img_path = os.path.join(root, file)
# Check the make sure the file is a JPEG
if not imghdr.what(img_path) == 'jpeg':
continue
img_counter += 1
print 'Done counting, {:d} images total.'.format(img_counter)

# Walk the root path
ctr = 0
for root, dirs, files in os.walk(path):
for file in files:
img_path = os.path.join(root, file)
# Check the make sure the file is a JPEG
if not imghdr.what(img_path) == 'jpeg':
continue
ctr += 1
percent_done = int((float(ctr) / img_counter) * 100)
print '{:3d}% -- {:s}'.format(percent_done, img_path)
img_obj = Image(img_path)
# print '{:s} -> {:016X}'.format(img_path, img_obj.hash)
image_list.append(img_obj)

# Write index as a bzip2'd file to save space
index_file = bz2.BZ2File('images_index.bz2', 'w')
cPickle.dump(image_list, index_file)
index_file.close()

print '\nIndex file images_index.bz2 created. Done.'

if __name__ == '__main__':
sys.exit(main())
(1-1/7)