Форум программистов, компьютерный форум, киберфорум
C#: Web, ASP.NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
bodya
1

Response.BinaryWrite и пробелы между символами

18.09.2008, 20:49. Показов 939. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Использую Response.BinaryWrite для вывода сформированного gif, в результате картинка не отображается. Смотрю результат вывода и вижу примерно такое G I F 8 9 ... Все символы через пробел, код #20. Самое странное, если я вывожу константу, вот так Response.BinaryWrite 'AAAZZZ', то в результате всё впорядке AAAZZZ - без всяких пробелов. Буду очень благодарен за любые мысли и рекомендации. Также, если у кого есть примеры генерации gif и/или других форматов на ASP дайте пожалуйста ссылки или вышлите сами исходники.
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.09.2008, 20:49
Ответы с готовыми решениями:

Проблема с Response.BinaryWrite
Запускаю код, предоставленный smaliq-ом в дискуссии от 24.11.2003г., созданной Alex11111: Set...

Response.BinaryWrite + файл Excel-a
У меня проблема при открытии файла Excel-a командой 'Response.BinaryWrite имя_файла_Excela ' ....

Странности с Response.BinaryWrite / content-disposition - attachment
Следующий код вызывает стандартное окно браузера с диалогом открыть/сохранить. Работает в IE6, в...

Передача большого файла клиенту через Response.BinaryWrite
Народ... Столкнулся с проблемой Отдаю через ASP скрипт файл клиенту....

4
al
19.09.2008, 05:40 2
http://www.relib.com/forums/topic.asp?id=732908
bodya
21.09.2008, 14:50 3
(Пожалуйста, смотрите первое сообщение этой нити)

Что интересно, если записать строку содержащую сформированный gif в файл, то gif оказывается корректным и нормально отображается.

Вот код записи в файл:
Код
'strNewGif содержит наполнение gif 'GIF89...'
'strPath имя файла
Set objFSO = CreateObject('Scripting.FileSystemObject')
Set objTextFile = objFSO.CreateTextFile(strPath, True)

objTextFile.Write strNewGif
А та же строка выводимая Response.BinaryWrite уже перемежается пробелами 'G I F 8 9 . . .'
bodya
21.09.2008, 17:24 4
(К первому же сообщению в этой нити)

Проблема решена!!! Уже был испробован метод вывода посредством ADODB.Stream, с предварительным заталкиванием строки в Recordset в виде поля adVarBinary. До ума не доводил, так как, вызрела модификации с изменениями в один символ (!!!).

При формирвании строки с телом gif из массива integer значений используем CharB вместо Char - вот и всё!

В результате получается строка содержащая однобайтовые символы, которые в неизменённом виде выводятся Response.BinaryWrite

Вот пример:
Код
'//цвет единственного пикселя и прозрачность :)
intRed = 100
intGreen = 0
intBlue = 0

intTransparent = 0

'// формируем однопиксельный gif 
Dim myArray(42)
myArray(0) = 71
myArray(1) = 73
myArray(2) = 70
myArray(3) = 56
myArray(4) = 57
myArray(5) = 97
myArray(6) = 1
myArray(7) = 0
myArray(8) = 1
myArray(9) = 0
myArray(10) = 128
myArray(11) = 0
myArray(12) = 0

'//RGB values
myArray(13) = intRed
myArray(14) = intGreen
myArray(15) = intBlue

myArray(16) = 0
myArray(17) = 0
myArray(18) = 0
myArray(19) = 33
myArray(20) = 249
myArray(21) = 4

'//Transparency value
If intTransparent = 0 Then
	myArray(22) = 0
Else
	myArray(22) = 1
End If

myArray(23) = 0
myArray(24) = 0
myArray(25) = 0
myArray(26) = 0
myArray(27) = 44
myArray(28) = 0
myArray(29) = 0
myArray(30) = 0
myArray(31) = 0
myArray(32) = 1
myArray(33) = 0
myArray(34) = 1
myArray(35) = 0
myArray(36) = 0
myArray(37) = 2
myArray(38) = 2
myArray(39) = 68
myArray(40) = 1
myArray(41) = 0
myArray(42) = 59

'//Create gif string
'Dim strNewGif (42)
For i = 0 To 42
  strNewGif = strNewGif & ChrB(myArray(i))
  'strNewGif = strNewGif & Chr(myArray(i))
  '//Must be one byte per char, instead Chr generate 2 bytes chars as UNICODE
Next

'//Output to HTTP
	Response.Buffer = True
	Response.ContentType = 'image/gif'
	Response.BinaryWrite strNewGif
	Response.Flush
bodya
21.09.2008, 17:26 5
Сорррииии
надо читать ChrB и Chr вместо CharB и Char - совсем от жары запарился!
21.09.2008, 17:26
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.09.2008, 17:26
Помогаю со студенческими работами здесь

Как на сервере открыть графический файл получить битовый массив и с помощью Response.BinaryWrite его отдать запрашиваемугу обьекту?
Кто знает как на сервере открыть графический файл получить битовый массив и с помощью...

Проблема с передачей файла клиенту через Response.binarywrite
Народ... Я уже во многих форумах спрашивал, но никто не ответил, может хоть вы мне поможите Я из...

Добавить пробелы между символами
Добрый вечер уважаемые! У меня есть такая задача: добавить пробелы между всеми символами. Времени...

Поставить пробелы между символами в массиве
поставить пробелами между символами в массиве masm model small stack 256 .data mes1 db...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru