powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / проблема с BMP
13 сообщений из 13, страница 1 из 1
проблема с BMP
    #34147063
parapet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
есть хендлер, который выполняет некоторые действия с bmp файлом и потом пишет его в исходящий поток.

делается это след образом:


        System.Drawing.Imaging.ImageFormat thisFormat = bmpTmp.RawFormat;
        System.IO.MemoryStream MS = new System.IO.MemoryStream();

        if (thisFormat.Equals(System.Drawing.Imaging.ImageFormat.Gif))
        {
            Response.ContentType = "image/gif";
        }
        else if (thisFormat.Equals(System.Drawing.Imaging.ImageFormat.Png))
        {
            Response.ContentType = "image/png";
        }
        else if (thisFormat.Equals(System.Drawing.Imaging.ImageFormat.Bmp))
        {
            Response.ContentType = "image/bmp";
        }
        else
        {
            thisFormat = System.Drawing.Imaging.ImageFormat.Jpeg;
            Response.ContentType = "image/jpeg";
        }
        bmpTmp.Save(MS, thisFormat);//png codec can't save to un-seekable array (see details in KnowledgeBase)
        byte[] buffer = MS.ToArray();
        Response.OutputStream.Write(buffer, 0, buffer.Length);

проблема в том, что картинка получается поганого качества:


пробую перед писанием в выходной поток сохранить в файл — все отличного качества:

и еще и размер ~ 12 раз меньше.

Что я делаю не так?... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
...
Рейтинг: 0 / 0
проблема с BMP
    #34147475
Аноним
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
InterpolationMode.HighQualityBicubic;
CompositingQuality.HighQuality;
SmoothingMode.HighQuality;
...
Рейтинг: 0 / 0
проблема с BMP
    #34147580
parapet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, <Аноним>, Вы писали:

А>InterpolationMode.HighQualityBicubic;
А>CompositingQuality.HighQuality;
А>SmoothingMode.HighQuality;

не помогло. Говорю же — сохраненный битмап хороший, плохой который в output пишется.


            Response.ContentType = "image/bmp";
        bmpTmp.Save(MS, thisFormat);//png codec can't save to un-seekable array (see details in KnowledgeBase)
        byte[] buffer = MS.ToArray();
        Response.OutputStream.Write(buffer, 0, buffer.Length);... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
...
Рейтинг: 0 / 0
проблема с BMP
    #34150474
parapet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, parapet, Вы писали:

:shuffle:... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
...
Рейтинг: 0 / 0
проблема с BMP
    #34150561
jenia
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Poprobui tak
//Setting High Quality Transformation
newGraphics.CompositingQuality =     System.Drawing.Drawing2D.CompositingQuality.HighQuality;
newGraphics.InterpolationMode =  System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
newGraphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
newGraphics.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality;
RspCont  ="image/bmp";
EncoderParameters ep = new EncoderParameters(1);
ImageCodecInfo icBMP = getCodecInfo(RspCont);
ep.Param[0] = new EncoderParameter(Encoder.Quality, (long) 80);

imgOutput.Save(Response.OutputStream,icBMP,ep);
//send the resized image to the viewer
newGraphics.Dispose();
g.Dispose();
imgOutput.Dispose();
private static ImageCodecInfo getCodecInfo(string mt)
(
ImageCodecInfo[] ici = ImageCodecInfo.GetImageEncoders();
int idx = 0;
for (int ii = 0; ii < ici.Length; ii++)
{
if (ici[ii].MimeType == mt)
{
idx = ii;
break;
}
}
return ici[idx];
}
...
Рейтинг: 0 / 0
проблема с BMP
    #34155302
parapet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
получаю

A generic error occurred in GDI+.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Runtime.InteropServices.ExternalException: A generic error occurred in GDI+.

на строчке


         imgOutput.Save(Response.OutputStream, icBMP, ep);

:xz:... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
...
Рейтинг: 0 / 0
проблема с BMP
    #34155855
jenia
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
OK
Ti prav est problema no tolko s BMP

Zameni
 imgOutput.Save(Response.OutputStream, icBMP, ep);
na
     using(MemoryStream stream = new MemoryStream())
     {
      imgOutput.Save(stream,icJPG,ep);
      stream.WriteTo(Response.OutputStream);
     }
...
Рейтинг: 0 / 0
проблема с BMP
    #34155856
jenia
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Izvini nebolshaia netochnost
Tak:

   using(MemoryStream stream = new MemoryStream())
     {
      imgOutput.Save(stream,icBMP,ep);
      stream.WriteTo(Response.OutputStream);
     }
...
Рейтинг: 0 / 0
проблема с BMP
    #34159425
parapet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
благодарю, то, что нужно :up:... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
...
Рейтинг: 0 / 0
проблема с BMP
    #34160211
parapet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, jenia, Вы писали:

J>Izvini nebolshaia netochnost
J>Tak:

J> using(MemoryStream stream = new MemoryStream())
J> {
J> imgOutput.Save(stream,icBMP,ep);
J> stream.WriteTo(Response.OutputStream);
J> }

а уменьшить размер файла чтобы он не 500 к занимал можно? ;)... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
...
Рейтинг: 0 / 0
проблема с BMP
    #34161535
Sinclair
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, parapet, Вы писали:
P>а уменьшить размер файла чтобы он не 500 к занимал можно? ;)
Можно, но нужно отказаться от формата BMP. 1.2.0 alpha rev. 655
...
Рейтинг: 0 / 0
проблема с BMP
    #34161849
parapet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, Sinclair, Вы писали:

S>Здравствуйте, parapet, Вы писали:
P>>а уменьшить размер файла чтобы он не 500 к занимал можно? ;)
S>Можно, но нужно отказаться от формата BMP.

просто тот же файл, сохраненный на диск, занимает в 20 раз меньше :)

А отказаться от BMP и чтобы было высокое качество — что юзать можно? ;)... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
...
Рейтинг: 0 / 0
проблема с BMP
    #34162105
Andre
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте, parapet, Вы писали:

P>А отказаться от BMP и чтобы было высокое качество — что юзать можно? ;)

PNG... << RSDN@Home 1.2.0 alpha rev. 655 :: LCD Soundsystem — Disco Infiltrator >>
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / проблема с BMP
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]