def create_resized_image(image_name, original_location, xconstrain=200, yconstrain=200):
	"""
	Takes an input URL for an image, a name for the image for it to be saved as, 
	and the optional xconstrain and yconstrain options, which are used to define the
	constraints to resize the image to. If these are not specified, they will default
	to 200px each. Returns the path to the image
	"""
	from PIL import Image, ImageOps
	import urllib
	import os
	from django.conf import settings

	if not os.path.exists('%s/images/resized/%s.jpg' % (settings.MEDIA_ROOT, image_name)): # Ensure a resized image doesn't already exist in the default MEDIA_ROOT/images/resized (MEDIA_ROOT is defined in Django's settings)
		unsized_image = urllib.urlretrieve(str(original_location)) # Fetch original image
		unsized_image = Image.open(unsized_image[0]) # Load the fetched image
		resized_image = ImageOps.fit(unsized_image, (xconstrain, yconstrain), Image.ANTIALIAS) # Create a resized image by fitting the original image into the constrains, and do this using proper antialiasing
		resized_image = resized_image.convert("RGB") # PIL sometimes throws errors if this isn't done
		resized_image.save('%s/images/resized/%s.jpg' % (settings.MEDIA_ROOT, image_name), 'jpeg') # Save the resized image as a jpeg into the MEDIA_ROOT/images/resized
		
	return '%s/images/resized/%s.jpg' % (settings.MEDIA_ROOT, image_name)