画像ファイルを読み込んで返す。
// ロギング用
private static Logger logger = LogManager.GetCurrentClassLogger();
// ローカル画像を読み込んで返す
public HttpResponseMessage Get()
{
try
{
var stream = new FileStream(@"C:\temp\1.png", FileMode.Open);
var res = new HttpResponseMessage()
{
Content = new StreamContent(stream)
,
StatusCode = System.Net.HttpStatusCode.OK
};
res.Content.Headers.ContentType
= new System.Net.Http.Headers.MediaTypeHeaderValue("image/jpeg");
return res;
}
catch (Exception ex)
{
logger.ErrorException("画像取得中にエラーが発生しました", ex);
return new HttpResponseMessage()
{
Content = new StringContent("予期せぬエラーが発生しました。")
,
StatusCode = System.Net.HttpStatusCode.InternalServerError
};
}
}
Imageクラスを(バイト配列にして)返す事もできる。
// ローカルの画像ファイルをImageクラスに読み込んで返す
public HttpResponseMessage Get()
{
try
{
byte[] bytes = null;
// 画像をImageクラスに読み込む
using (Image img = Image.FromFile(@"C:\temp\1.png"))
using (Graphics g = Graphics.FromImage(img))
{
// 現在時刻とか書き込んでみる
g.DrawString("Hello WebAPI."
, new Font("MS Gothic", 10)
, Brushes.Black, 10, 80);
g.DrawString(DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"),
new Font("MS Gothic", 10)
, Brushes.Black, 10, 100);
// バイト配列にする
ImageConverter imgconv = new ImageConverter();
bytes = (byte[])imgconv.ConvertTo(img, typeof(byte[]));
}
var res = new HttpResponseMessage()
{
Content = new ByteArrayContent(bytes) ,
StatusCode = System.Net.HttpStatusCode.OK
};
res.Content.Headers.ContentType
= new System.Net.Http.Headers.MediaTypeHeaderValue("image/png");
return res;
}
catch (Exception ex)
{
logger.ErrorException("画像取得中にエラーが発生しました", ex);
return new HttpResponseMessage()
{
Content = new StringContent("予期せぬエラーが発生しました。")
,
StatusCode = System.Net.HttpStatusCode.InternalServerError
};
}
}
ロギングとかエラーの返し方は適当。
0 件のコメント:
コメントを投稿