Только что получил странную ошибку. Мне отправили изображение по электронной почте, я открыл письмо в Outlook (версия Office 365) и дважды щелкнул изображение, чтобы открыть. Я получил эту ошибку:
«Программа просмотра фотографий Windows не может отобразить это изображение, поскольку на вашем компьютере может быть недостаточно памяти. Закройте некоторые программы, которые вы не используете, или освободите место на жестком диске (если он почти заполнен), а затем повторите попытку».
Несколько моментов:
- Я всегда пользовался программой просмотра фотографий на этом ноутбуке и раньше не было проблем. Я перезагрузил и попытался снова открыть изображение, но безуспешно.
- Изображение не повреждено. Я сохранил на рабочий стол, попытался открыть, та же проблема. Я открыл в Photoshop, это сработало нормально. Я сохранил его из PSD как новый JPG. Новый JPG также отображает то же сообщение.
- Любое изображение, которое я пытался открыть, приводило к этой ошибке.
- Размер изображения 200 КБ, разрешение 1428x2000.
- На моем ноутбуке 32 ГБ оперативной памяти, и в настоящее время, согласно диспетчеру задач, используется 8 ГБ.
Что я пробовал:
Этот пост от Microsoft:https://social.technet.microsoft.com/Forums/windows/en-US/7b6ae08b-4b5c-443b-9d43-e87ca5e7aeb1/wndows-photo-viewer-operation?forum=w7itproappcompat
- Это не сработало, потому что когда я перехожу к управлению цветом, у меня нет настроенных профилей, и я не могу их удалить.
Я видел этот пост:Для Windows Photo Viewer требуется больше оперативной памяти?
- У меня 2 встроенные видеокарты: стандартная Intel(R) HD Graphics 530 и Nvidia Quadro M1000M. Я пробовал разрешение, указанное в посте (переставляя его на разные мониторы с разными видеокартами), и ничего не изменилось.
Очистка диска. Места свободного было предостаточно, но ничего не изменилось.
Характеристики: Я использую Windows 10 v1909 Build 18363.535 на ноутбуке Lenovo P50 с 32 ГБ памяти, 500 ГБ хранилища (в настоящее время свободно 192 ГБ), Intel Core i7-6700HQ.
Буду признателен, если кто-нибудь поможет это исправить. Новое приложение Microsoft Photos просто ужасно, и я буду избегать его любой ценой.
решение1
Я разбираюсь в этой проблеме, потому что у меня была похожая проблема с фотографиями, экспортированными с Android.Отправить Скидка Бесплатноприложение.
Эта проблема в моем случае связана с включеннымПрофиль-iccв этом JPG-файле.
Profiles:
Profile-icc: 536 bytes
Это можно проверить с помощьюImageMagick идентифицирует -verboseкоманда.
Это, возможно, не решение для открытия файлов прямо из Outlook, но вы можете исправить это в исходном коде.
Я обнаружил, что когда я бегупреобразовать BADFILE.jpg -удалить GOODFILE.jpgкоманду для этого файла, он открывается в средстве просмотра фотографий Windows 7 без каких-либо проблем.
-strip - strip image of all profiles and comments
Весь этот инструмент можно получить здесь:https://imagemagick.org/script/download.php
Так что если вы хотите снова сделать все изображения доступными, просто запустите пакетную обработку для них:
mogrify.exe -format jpg -verbose -path C:\OUTPUT_DIR -strip *.jpg
Также можно использовать относительный путь, например-path ВЫХОДНОЙ_КАТАЛОГесли Вы хотите, чтобы они были в подпапке.
Если вам нужно открывать эти файлы напрямую из Outlook, я бы рекомендовал, например, IrfanView, у которого нет проблем с открытием этих файлов. Просто установите его как программу для графических файлов по умолчанию.
Некоторые люди советовали что-то, связанное с изменением профилей по умолчанию в конфигурации экрана, но у меня они настроены на тип монитора, поэтому я не хочу возиться с этими настройками.
Если вы хотите, чтобы это было полностью автоматически, вам понадобятся 3 вещи:
- Редактор программ по умолчанию (https://defaultprogramseditor.com/)
- ImageMagick (https://imagemagick.org/download/binaries/ImageMagick-7.0.10-1-portable-Q16-x64.zip)
- Пакетный скрипт, который обработает открытый файл.
1) Сначала распакуйте ImageMagick в c:\apps\ImageMagick-7.0.10-1-portable-Q16-x64
2) Создать пакетный скриптc:\apps\gfxopen.bat:
@echo off
C:\Apps\ImageMagick-7.0.10-1-portable-Q16-x64\convert.exe %1 -strip c:\temp\temp12345file.jpg
rundll32 "C:\Program Files\Windows Photo Viewer\PhotoViewer.dll", ImageView_Fullscreen c:\temp\temp12345file.jpg
del c:\temp\temp12345file.jpg
3) РаспаковкаDefaultProgramsEditorи запустите его, затем выберитеНастройки типа файла > Контекстное меню > найдите расширение jpg, затем > Добавить...
Имя команды:Open Fixed Image
Путь программы:"C:\apps\gfxopen.bat" "%1"
Тогда выбирай«Открыть фиксированное изображение»и нажмите«Установить выбранную команду как команду по умолчанию»
ЗатемСохранить контекстное меню
Вот и все :)
решение2
У меня возникла та же проблема, и я решил ее, выполнив простые действия:
- Откройте файл изображения с помощью Notepad++ или любого другого аналогичного шестнадцатеричного редактора.
- Найти
ICC_PROFILE
внутри текста и заменитьICC_PROFILX
(обычно в первой текстовой строке файла) - Сохраните отредактированный файл. Вот и все!
решение3
решение4
Для разработчиков Android, которые могли столкнуться с этим: похоже, что Windows Photo Viewer не любит метаданные профиля ICC, которые Bitmap.compress
он записывает (возможно, ему не нравитсялюбойПрофили ICC на самом деле? Я не проверял).
Вот способ простого удаления этого сегмента метаданных из файла JPEG, что приведет к получению файла JPEG, снова совместимого с Windows Photo Viewer:
// Some image viewer applications (such as Windows Photo Viewer) doesn't seem to like the ICC profile meta data that Android's Bitmap.compress writes.
// This decorator removes the section.
private static class RemoveFFE2OutputStreamDecorator extends OutputStream {
OutputStream underlyingStream;
boolean marker = false;
boolean skipSegment = false;
public RemoveFFE2OutputStreamDecorator(OutputStream underlyingStream) {
this.underlyingStream = underlyingStream;
}
@Override
public void write(int b) throws IOException {
// Based on https://en.wikipedia.org/wiki/JPEG#Syntax_and_structure
if (this.marker) {
this.marker = false;
if ((b & 0xFF) == 0xE2) { // The 0xFF,0xE2 segment that Android writes seems to cause trouble with Windows Photo Viewer.
this.skipSegment = true;
} else {
this.skipSegment = false;
this.underlyingStream.write(0xFF);
this.underlyingStream.write(b);
}
} else if ((b & 0xFF) == 0xFF) {
this.marker = true;
} else if (!this.skipSegment) {
this.underlyingStream.write(b);
}
}
@Override
public void flush() throws IOException {
this.underlyingStream.flush();
}
@Override
public void close() throws IOException {
this.underlyingStream.close();
}
}