C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

■89221 / 親階層)  MemoryStreamのメモリ解放
□投稿者/ 小道 (1回)-(2018/11/08(Thu) 19:24:08)

分類:[C#] 

下記コードにて、重いJPG(30MB)をループで数十枚処理しようとするとメモリ不足が出てしまいます。
5枚ぐらいは正常処理されます。ご助力願います。
この関数はJPGイメージに任意の緯度経度のEXIF情報を追加するものです。
ms.Dispose();をreturnの前に追加すると呼び出し側でエラーになってしまいます。

どのようにすれば軽くなりますでしょうか?
    	


static Image Geotag(Image original, double lat, double lng)
		{
    	// These constants come from the CIPA DC-008 standard for EXIF 2.3
    	const short ExifTypeByte = 1;
    	const short ExifTypeAscii = 2;
    	const short ExifTypeRational = 5;

    	const int ExifTagGPSVersionID = 0x0000;
    	const int ExifTagGPSLatitudeRef = 0x0001;
    	const int ExifTagGPSLatitude = 0x0002;
    	const int ExifTagGPSLongitudeRef = 0x0003;
    	const int ExifTagGPSLongitude = 0x0004;

    	char latHemisphere = 'N';
    	if (lat < 0)
    	{
        latHemisphere = 'S';
        lat = -lat;
        
    	}
    	char lngHemisphere = 'E';
    	if (lng < 0)
    	{
        lngHemisphere = 'W';
        lng = -lng;
       
    	}

    	MemoryStream ms = new MemoryStream();
    	original.Save(ms, ImageFormat.Jpeg);
    	ms.Seek(0, SeekOrigin.Begin);
	Image img = Image.FromStream(ms);
   	 		
    	AddProperty(img, ExifTagGPSVersionID, ExifTypeByte, new byte[] { 2, 3, 0, 0 });
    	AddProperty(img, ExifTagGPSLatitudeRef, ExifTypeAscii, new byte[] { (byte)latHemisphere, 0 });
    	AddProperty(img, ExifTagGPSLatitude, ExifTypeRational, ConvertToRationalTriplet(lat));
    	AddProperty(img, ExifTagGPSLongitudeRef, ExifTypeAscii, new byte[] { (byte)lngHemisphere, 0 });
    	AddProperty(img, ExifTagGPSLongitude, ExifTypeRational, ConvertToRationalTriplet(lng));
  		
     	return img;

		}

編集キー/

前の記事(元になった記事) 次の記事(この記事の返信)
親記事 →Re[1]: MemoryStreamのメモリ解放 /Hongliang
 
上記関連ツリー

MemoryStreamのメモリ解放 / 小道 (18/11/08(Thu) 19:24) #89221 ←Now
Re[1]: MemoryStreamのメモリ解放 / Hongliang (18/11/08(Thu) 19:34) #89222
  └ Re[2]: MemoryStreamのメモリ解放 / 小道 (18/11/09(Fri) 08:47) #89225
    ├ Re[3]: MemoryStreamのメモリ解放 / 魔界の仮面弁士 (18/11/09(Fri) 10:25) #89229
    └ Re[3]: MemoryStreamのメモリ解放 / にゃるら (18/11/09(Fri) 09:26) #89226
      └ Re[4]: MemoryStreamのメモリ解放 / shu (18/11/09(Fri) 10:43) #89230
        └ Re[5]: MemoryStreamのメモリ解放 / 小道 (18/11/09(Fri) 18:12) #89232 解決済み

上記ツリーを一括表示 / 上記ツリーをトピック表示
 
上記の記事へ返信