Source 
  File: wp-includes/media.php 
 function wp_get_image_editor( $path, $args = array() ) {
	$args['path'] = $path;
	if ( ! isset( $args['mime_type'] ) ) {
		$file_info = wp_check_filetype( $args['path'] );
		// If $file_info['type'] is false, then we let the editor attempt to
		// figure out the file type, rather than forcing a failure based on extension.
		if ( isset( $file_info ) && $file_info['type'] ) {
			$args['mime_type'] = $file_info['type'];
		}
	}
	$implementation = _wp_image_editor_choose( $args );
	if ( $implementation ) {
		$editor = new $implementation( $path );
		$loaded = $editor->load();
		if ( is_wp_error( $loaded ) ) {
			return $loaded;
		}
		return $editor;
	}
	return new WP_Error( 'image_no_editor', __( 'No editor could be selected.' ) );
}