高解像度画像と高解像度画像の圧縮バージョンの両方をデータベースに保存しています。
ユーザーが高解像度の画像を要求した場合、圧縮された画像を表示する必要があります。これが私のコードです。
問題は、その画像バイト配列をストリームとビットマップに設定すると、ファイル サイズが 2.27MB から 339kB に圧縮されることです。
ここで何が間違っていますか?
private void DisplayImageFromBytes(byte[] byteArray, int resizeWidth, bool isHiResImage) {
if (isHiResImage)
{
Stream stream = new MemoryStream(byteArray);
System.Drawing.Image img = System.Drawing.Image.FromStream(stream);
Bitmap bitmap = null;
if (resizeWidth > 0 && img.Width > resizeWidth)
{
int newHeight = (int)((float)img.Height * ((float)resizeWidth / (float)img.Width));
bitmap = new Bitmap(img, resizeWidth, newHeight);
}
else
{
bitmap = new Bitmap(img);
}
Response.ContentType = "image/Jpeg";
bitmap.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);
stream.Dispose();
img.Dispose();
bitmap.Dispose();
}
else
{
DisplayImageFromBytes(byteArray, resizeWidth);
}
}