メモリ不足のため、Windows フォト ビューアーを実行できませんか?

メモリ不足のため、Windows フォト ビューアーを実行できませんか?

奇妙なエラーが発生しました。メールで画像が送られてきて、Outlook (Office 365 バージョン) でメールを開き、画像をダブルクリックして開きました。次のエラーが発生しました:

「コンピュータのメモリが不足しているため、Windows フォト ビューアーでこの画像を表示できません。使用していないプログラムを閉じるか、ハード ディスクの空き容量を増やして (空き容量がほとんどない場合)、もう一度お試しください。」

ここに画像の説明を入力してください

いくつかのポイント:

  • これまでこのノートパソコンでフォトビューアーを常に使用してきましたが、これまで問題は発生しませんでした。再起動して画像をもう一度開こうとしましたが、うまくいきませんでした。
  • 画像は破損していません。デスクトップに保存して開こうとしましたが、同じ問題が発生しました。Photoshop で開くと、問題なく動作しました。PSD から新しい JPG として保存しました。新しい JPG でも同じメッセージが表示されます。
  • どの画像を開こうとしても、このエラーが発生します。
  • 画像のサイズは 200KB、解像度は 1428x2000 です。
  • 私のラップトップには 32GB の RAM があり、タスク マネージャーによると現在そのうち 8GB を使用しています。

私が試したこと:

Microsoft からのこの投稿:https://social.technet.microsoft.com/Forums/windows/en-US/7b6ae08b-4b5c-443b-9d43-e87ca5e7aeb1/wndows-photo-viewer-operation?forum=w7itproappcompat

  • これは機能しませんでした。カラー管理に進むと、プロファイルが設定されていないため、削除できないからです。

私はこの投稿を見ました:Windows フォト ビューアーにはさらに多くの RAM が必要ですか?

  • 私には、標準の Intel(R) HD Graphics 530 と Nvidia Quadro M1000M の 2 つのビデオ カードが内蔵されています。投稿にある解像度を試してみましたが (別のビデオ カードを搭載した別のモニターに移動)、何も変わりませんでした。

ディスクをクリーンアップしました。とにかく十分な空き領域がありましたが、何も変わりませんでした。

仕様: 32GB のメモリ、500GB のストレージ (現在 192GB の空き容量)、Intel Core i7-6700HQ を搭載した Lenovo P50 ラップトップで Windows 10 v1909 Build 18363.535 を実行しています。

どなたかこの問題を解決するのを手伝っていただけるとありがたいです。新しい Microsoft フォト アプリは本当にひどいので、どんなことがあっても使用しないようにします。

答え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 をお勧めします。IrfanView では問題なくファイルを開くことができます。これを既定のグラフィック ファイル プログラムとして設定するだけです。

画面構成のデフォルト プロファイルを変更することに関連するアドバイスをしてくれた人もいますが、私はモニターの種類に設定しているので、その設定を変更したくありません。

これを完全に自動化したい場合は、次の 3 つが必要です。

  1. デフォルトプログラムエディタ (https://defaultprogramseditor.com/
  2. イメージマジック(https://imagemagick.org/download/binaries/ImageMagick-7.0.10-1-portable-Q16-x64.zip
  3. 開いたファイルを処理するバッチ スクリプト。

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

私も同じ問題に遭遇しましたが、次の簡単な手順で解決しました。

  • Notepad++ またはその他の同様の 16 進エディターで画像ファイルを開きます。
  • ICC_PROFILEテキスト内を検索して置換しますICC_PROFILX(通常はファイルの最初のテキスト行)
  • 編集したファイルを保存します。これで完了です。

前に ここに画像の説明を入力してください ここに画像の説明を入力してください

答え3

colorWindows のスタートメニューの検索ボックスに入力して、を開きますColour Management

「カラー」スタートメニュー検索

次にタブに移動してAdvancedAgfa:Swop StandardDevice Profile

カラー管理画面

答え4

Android開発者の皆さん、このことに気付いた方は、WindowsフォトビューアーがICCプロファイルメタデータを好まないようですBitmap.compress(おそらく、どれでも実際 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();
        }
    }

関連情報