問題はマネージド リソースの使用にあることが判明しました。resx ビルダーは画像ファイルからBitmapオブジェクトを作成し、それらのオブジェクトをシリアル化します。元のファイル ストリームは保存されません。ただし、埋め込みリソースはフラット バイナリ ファイルを格納できます。
次の.csproj
エントリを使用して、画像フォルダーからすべてのファイルを埋め込みます。
<EmbeddedResource Include="Images\*.jpg" />
<EmbeddedResource Include="Images\*.png" />
<EmbeddedResource Include="Images\*.gif" />
Visual Studio は、それらを にBuild Action
設定された通常のプロジェクト内ファイルとして表示しますEmbedded Resource
。
次に、私のコードから、元のファイル ストリームを次のように読み込みます。
var assembly = GetType().Assembly;
var regex = new Regex("\\.(png|jpg|gif))$");
foreach (var bitmap in assembly.GetManifestResourceNames())
{
if(!regex.IsMatch(bitmap)
continue;
var stream = assembly.GetManifestResourceStream(bitmap);
//handle the stream here
}