![]() |
|
Модераторы: gambit |
![]()
|
|
| Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: нет Всего: 207 |
Задача - загрузить картинку, нарисовать на ней надпись, вывести в выходной поток. Код который в первом приближении работает написал:
Косяк в том что выходной поток формируется формата Jpeg поэтому текст виден на редко хреново, "jpg-муар" вокруг букв настолько сильный, что текст вообще не видать. Попытки менять формат в строках обозначенных (1) и (2) приводят к тому что программу просто выбивает по "неперехваченной" ошибке GDI+ без всякого осмысленного описания сути ошибки. А посему возникают вопросы: 1. Как вывести поток в формате png или bmp? 2. Как регулировать глубину jpg компрессии при работе? Меня бы устроило вместо дегенеративной охрененно сильной компрессии jpg относительно слабая компрессия когда можно достичь приемлимого качества хотя бы в минимальном приближении. 3. Как вообще конвертировать один формат в другой? -------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
| Mymik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1474 Регистрация: 12.5.2006 Где: Lamer-центер Репутация: 50 Всего: 78 |
Изменить флажек ImageFormat. При выполнении 11 строчки кода, автоматически конвертируется формат. А на что ты менял ??? вообще ошибки не должно быть. Она должна быть где-то в другом месте тогда. -------------------- |
|||
|
||||
| Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: нет Всего: 207 |
На всё менял, работает только так, как я написал, при любых других значениях ImageFormat выбивает по приведенной выше ошибке. -------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
| Mymik |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1474 Регистрация: 12.5.2006 Где: Lamer-центер Репутация: 50 Всего: 78 |
Vit, ошибка 1000% в другом месте
В аттаче архив состоящих из трех файлов Default5.aspx -- пустая страница Default5.aspx.cs -- изменение изображения ept.jpg -- изображение (первое попавшееся из поиска в гугле по слову "картинка" :о) ) Работает все идеально. Изменил 8 строчку на
Изменил 11 строку на
Сгенерированное изображение плохого качества, но и текст и картинка есть. Присоединённый файл ( Кол-во скачиваний: 11 )
send.rar 10,08 Kb-------------------- |
||||
|
|||||
| Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: нет Всего: 207 |
А если изначально загружается файл Gif?
-------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
| Mymik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1474 Регистрация: 12.5.2006 Где: Lamer-центер Репутация: 50 Всего: 78 |
Vit, все равно все нормально...
-------------------- |
|||
|
||||
| Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: нет Всего: 207 |
Взял твой пример, с jpg и c gif работает нормально, а в bmp - эта же ошибка, вот этот код не работает:
Gif не подходит, этот Image/Graphics/Bitmap объект (уж не знаю какой из них) неправильно индексирует цвета при выводе в Gif формате. Для того чтобы Gif выглядел хорошо нормальные редакторы выбирают не абы какие 256 цветов палитры, а именно те которые наиболее представленны на рисунке. Создатели GDI+ видимо об этом и слыхом не слыхивали или просто схалтурили, проиндексировав цвета как бог на душу пошлёт, а потому вопрос можно сформулировать следующим образом: 1. Как мне вывести картинку в любом формате который поддерживает как минимум 15K цветов, а лучше 24 битный цвет без потери качества в следствии компрессии или с горазо меньшими потерями который даёт стандартный уровень компрессии JPG 2. Как конвертировать форматы изображения: BMP -> JPG - Так чтобы можно было определять уровень компрессии вручную BMP -> GIF , JPG -> GIF - Так чтобы можно было настраивать палитры цветов. Пока задача не решена и даже близко не ясно как её решать. -------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
| Naum |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 743 Регистрация: 7.9.2005 Где: Саратов, ул. Поса дского, 298 Репутация: 2 Всего: 15 |
У метода Image.Save есть перегрузка, которая в качестве параметра принимает System.Drawing.Imaging.EncoderParameters. Давненько я их использовал, поэтому, Vit, извини, конкретного ничего подсказать не могу. Но всегда можно посмотреть примеры в MSDN.
-------------------- У нас всего два праздника Новый год и ТЯПница. |
|||
|
||||
| dazy |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 15.9.2006 Репутация: 4 Всего: 8 |
Может, использовать формат .png? Очень хороший формат.
|
|||
|
||||
| Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: нет Всего: 207 |
Как? если так как указано в приведенном куске кода то вылетает та же ошибка.
Спасибо, попробую -------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
| dazy |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 15.9.2006 Репутация: 4 Всего: 8 |
Вот так:
Малость поправил код Mymik`а. Ну, понятно что png надо в <img> оборачивать. В строчках 6, 9-12 можно поиграть с качеством отрисовки. Самое важное - строки 18-20. С png нельзя использовать метод Bitmap.Save() сразу в выходной поток, так как при сохранении png нужен поток внутри которого можно перемещаться назад и вперед. Выходной поток Response.OutputStream - односторонее движение. Поэтому промежуточно сохраняем картинку в MemoryStream а потом уже в Response.OutputStream. p.s. Netscape 4.x не поддерживает png. p.p.s Если поменять на Jpeg, то у меня выводит ошибку XML, если обернуть картинку в <img> то все нормально, png-же показвает и без обертки (в ie7). |
||||
|
|||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Любитель, Mymik, mr.DUDA. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Разработка под ASP.NET | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |