def _create_alternative_resolutions(self, source_image, geometry_string,<EOL>options, name):
ratio = default.engine.get_image_ratio(source_image, options)<EOL>geometry = parse_geometry(geometry_string, ratio)<EOL>file_name, dot_file_ext = os.path.splitext(name)<EOL>for resolution in settings.THUMBNAIL_ALTERNATIVE_RESOLUTIONS:<EOL><INDENT>resolution_geometry = (int(geometry[<NUM_LIT:0>] * resolution), int(geometry[<NUM_LIT:1>] * resolution))<EOL>resolution_options = options.copy()<EOL>if '<STR_LIT>' in options and isinstance(options['<STR_LIT>'], string_types):<EOL><INDENT>crop = options['<STR_LIT>'].split("<STR_LIT:U+0020>")<EOL>for i in range(len(crop)):<EOL><INDENT>s = re.match(r"<STR_LIT>", crop[i])<EOL>if s:<EOL><INDENT>crop[i] = "<STR_LIT>" % int(int(s.group(<NUM_LIT:1>)) * resolution)<EOL><DEDENT><DEDENT>resolution_options['<STR_LIT>'] = "<STR_LIT:U+0020>".join(crop)<EOL><DEDENT>image = default.engine.create(source_image, resolution_geometry, options)<EOL>thumbnail_name = '<STR_LIT>' % {<EOL>'<STR_LIT>': file_name,<EOL>'<STR_LIT>': '<STR_LIT>' % resolution,<EOL>'<STR_LIT>': dot_file_ext<EOL>}<EOL>thumbnail = ImageFile(thumbnail_name, default.storage)<EOL>default.engine.write(image, resolution_options, thumbnail)<EOL>size = default.engine.get_image_size(image)<EOL>thumbnail.set_size(size)<EOL><DEDENT>
Creates the thumbnail by using default.engine with multiple output
sizes.  Appends @<ratio>x to the file name.