Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / проблема с BMP / 13 сообщений из 13, страница 1 из 1
22.11.2006, 14:59
    #34147063
parapet
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с BMP
есть хендлер, который выполняет некоторые действия с 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
22.11.2006, 16:21
    #34147475
Аноним
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с BMP
InterpolationMode.HighQualityBicubic;
CompositingQuality.HighQuality;
SmoothingMode.HighQuality;
...
Рейтинг: 0 / 0
22.11.2006, 16:41
    #34147580
parapet
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с BMP
Здравствуйте, <Аноним>, Вы писали:

А>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
23.11.2006, 14:52
    #34150474
parapet
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с BMP
Здравствуйте, parapet, Вы писали:

:shuffle:... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
...
Рейтинг: 0 / 0
23.11.2006, 15:14
    #34150561
jenia
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с BMP
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
25.11.2006, 13:58
    #34155302
parapet
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с BMP
получаю

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
26.11.2006, 12:40
    #34155855
jenia
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с BMP
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
26.11.2006, 12:41
    #34155856
jenia
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с BMP
Izvini nebolshaia netochnost
Tak:

   using(MemoryStream stream = new MemoryStream())
     {
      imgOutput.Save(stream,icBMP,ep);
      stream.WriteTo(Response.OutputStream);
     }
...
Рейтинг: 0 / 0
28.11.2006, 03:26
    #34159425
parapet
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с BMP
благодарю, то, что нужно :up:... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
...
Рейтинг: 0 / 0
28.11.2006, 11:58
    #34160211
parapet
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с BMP
Здравствуйте, 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
28.11.2006, 16:39
    #34161535
Sinclair
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с BMP
Здравствуйте, parapet, Вы писали:
P>а уменьшить размер файла чтобы он не 500 к занимал можно? ;)
Можно, но нужно отказаться от формата BMP. 1.2.0 alpha rev. 655
...
Рейтинг: 0 / 0
28.11.2006, 17:44
    #34161849
parapet
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с BMP
Здравствуйте, Sinclair, Вы писали:

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

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

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

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

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


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