          frame_fullname = frame["frame_fullname"]
          frame_name = frame["frame_name"]
          faces = self.select_valid_faces(frame_fullname)
  
          for idx, face in enumerate(faces):
              output = "{}_{}{}".format(frame_name, str(idx), extension)
              if self.type == "large":
 
</s> remove             output = "{}_{}{}".format(frame_name, str(idx), ".png")
            self.frames.save_image(self.faces_dir, output, face.aligned_face)
 </s> add             output = "{}_{}{}".format(frame_name, str(idx), extension)
            if self.type == "large":
                self.frames.save_image(self.faces_dir, output, face.aligned_face)
            else:
                output = os.path.join(self.faces_dir, output)
                f_hash = self.extracted_faces.save_face_with_hash(output,
                                                                  extension,
                                                                  face.aligned_face)
                self.alignments.data[frame_fullname][idx]["hash"] = f_hash </s> remove             if self.export_face:
                save_queue.put((filename,
                                detected_face["file_location"],
                                detected_face["face"].aligned_face,
                                idx))
 </s> add             output_file = detected_face["file_location"]
            extension = Path(filename).suffix
            out_filename = "{}_{}{}".format(str(output_file), str(idx), extension)

            face = detected_face["face"]
            resized_face = face.aligned_face </s> remove             return faces
        valid_faces = list()
        sizes = self.extracted_faces.get_roi_size_for_frame(frame)
        for idx, size in enumerate(sizes):
            if size >= self.extracted_faces.size:
                valid_faces.append(faces[idx])
 </s> add             valid_faces = faces
        else:
            sizes = self.extracted_faces.get_roi_size_for_frame(frame)
            valid_faces = [faces[idx]
                           for idx, size in enumerate(sizes)
                           if size >= self.extracted_faces.size]
        logger.trace("frame: '%s', total_faces: %s, valid_faces: %s",
                     frame, len(faces), len(valid_faces)) </s> remove                 for idx, face in enumerate(faces):
                    image = self.convert_one_face(converter,
                                                  (filename, image, idx, face))
 </s> add                 for face in faces:
                    image = self.convert_one_face(converter, image, face)
        extension = os.path.splitext(frame_fullname)[1]
          frame_fullname = frame["frame_fullname"]
          frame_name = frame["frame_name"]
        extension = os.path.splitext(frame_fullname)[1]
          faces = self.select_valid_faces(frame_fullname)
  
          for idx, face in enumerate(faces):
              output = "{}_{}{}".format(frame_name, str(idx), extension)
              if self.type == "large":
keep add keep keep keep keep keep
 Add Face Hashes to Alignments (#550)

* Convert main scripts to use face hashes

* Alignment tool: Use hashes, add logging, add face rename function

* More logging. Update Manual tool to work with hashing 
tools/lib_alignments/jobs.py