剛剛遇到一個奇怪的錯誤。我透過電子郵件收到了一張圖像,在 Outlook(Office 365 版本)中開啟了該電子郵件,然後雙擊圖像以開啟。我收到這個錯誤:
「Windows 照片檢視器無法顯示此圖片,因為您的電腦上可能沒有足夠的可用記憶體。請關閉一些不使用的程式或釋放一些硬碟空間(如果它幾乎已滿),然後重試。”
幾點:
- 我一直在這台筆記型電腦上使用照片檢視器,以前沒有遇到過問題。我重新啟動並嘗試再次打開圖像,但沒有成功。
- 影像沒有損壞。我保存到桌面,嘗試打開,同樣的問題。我用Photoshop打開的,效果很好。我將它從 PSD 儲存為新的 JPG。新的 JPG 也顯示相同的訊息。
- 我嘗試打開的任何圖像都會導致此錯誤。
- 影像大小為 200KB,解析度為 1428x2000。
- 我的筆記型電腦有 32GB RAM,根據任務管理器顯示目前正在使用 8GB。
我嘗試過的:
- 這不起作用,因為當我進入顏色管理時,我沒有設定配置文件,所以我無法刪除。
我看過這個帖子:Windows 相簿檢視器需要更多記憶體嗎?
- 我有 2 個內建顯示卡:標準 Intel(R) HD Graphics 530 和 Nvidia Quadro M1000M。我已經嘗試過帖子中的分辨率(將其移動到由不同顯示卡供電的不同顯示器),但沒有任何變化。
磁碟清理。無論如何,有足夠的空閒空間,但沒有任何改變。
規格:我在一台 Lenovo P50 筆記型電腦上執行 Windows 10 v1909 Build 18363.535,配備 32GB 記憶體、500GB 儲存(目前有 192GB 可用空間)、Intel Core i7-6700HQ。
如果有人可以幫助解決這個問題,我們將不勝感激。新的微軟照片應用程式絕對是糟糕的,我會不惜一切代價避免使用它。
答案1
我發現這個問題是因為我在處理從 Android 匯出的照片時遇到了類似的問題減少免費發送應用。
在我的案例中,這個問題與包含在內有關簡介-icc在該 JPG 檔案中。
Profiles:
Profile-icc: 536 bytes
可以透過以下方式驗證ImageMagick 辨識 -verbose命令。
這可能不是直接從 Outlook 打開它的解決方案,但您可以在來源中修復該檔案。
我發現當我跑步時轉換 BADFILE.jpg -strip 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
也可能使用相對路徑,例如-路徑 OUTPUT_DIR如果您希望它們位於子資料夾中。
如果您必須直接從 Outlook 開啟該文件,我會推薦例如 IrfanView,它在開啟該文件時沒有問題。只需將其設定為預設圖形檔案程式即可。
有些人建議與更改螢幕配置中的預設設定檔相關的內容,但我將其設定為我的顯示器類型,因此我不想弄亂該設定。
如果你想要全自動,你需要三件事:
- 預設程式編輯器(https://defaultprogramseditor.com/)
- 圖像魔術師(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)解壓預設程式編輯器並運行它,然後選擇檔案類型設定 > 上下文選單 > 找到 jpg 副檔名,然後 > 新增...
命令名稱:Open Fixed Image
程式路徑:"C:\apps\gfxopen.bat" "%1"
然後選擇“打開固定影像”並按“將所選命令設為預設命令”
然後儲存上下文選單
就這樣 :)
答案2
答案3
答案4
對於任何可能遇到此問題的 Android 開發人員:似乎 Windows 照片檢視器不喜歡Bitmap.compress
寫入的 ICC 設定檔元資料(也許它不喜歡任何實際上 ICC 配置檔案嗎?我沒查過)。
以下是一種簡單地從 JPEG 檔案中刪除元資料段的方法,從而產生再次與 Windows 照片檢視器相容的 JPEG:
// 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();
}
}