|
Как получить картинку из строки | ☑ | ||
---|---|---|---|---|
0
maxp77
25.10.11
✎
13:21
|
Как получить картинку из строки strP (строка шестнадцатиричных значений), выгруженную следующим паскалевским кодом:
MS:=TMemoryStream.Create; try TBlobField(___.FieldByName('PORTRAIT')).SaveToStream(MS); MS.Seek(0, soFromBeginning); for i:=0 to MS.Size-1 do begin MS.Read(Buf, 1); strP:=strP+DecToHex(Buf); end; finally MS.Free; end; |
|||
1
Scooter
25.10.11
✎
13:23
|
(0)преобразуй в зад
|
|||
2
maxp77
25.10.11
✎
13:24
|
(1) Мне из 1С это сделать надо, а не из Паскаля
|
|||
3
mikecool
25.10.11
✎
13:25
|
(2) а в картинку незя было сохранить?
|
|||
4
mikecool
25.10.11
✎
13:26
|
+3 tbmp, tjpg и прочая не судьба было заюзать?
|
|||
5
maxp77
25.10.11
✎
13:27
|
(3) да, не я сохранял; не мой это код, но мне из этой выгрузки картинки извлекать надо.
|
|||
6
Maxus43
25.10.11
✎
13:31
|
(5) ну напиши на паскале преобразование в зад, а потом уже в 1с грузи. в 1с нет просто DecToHex и наоборот
|
|||
7
Maxus43
25.10.11
✎
13:31
|
или сам функции преобразования пиши...
|
|||
8
mikecool
25.10.11
✎
13:32
|
попробуй скормить объекту ДвоичныеДанные, если получится
|
|||
9
Maxus43
25.10.11
✎
13:34
|
(8) врятли, формат картинки поковеркан уже
|
|||
10
maxp77
25.10.11
✎
13:37
|
(8) - пробовал, по логике надо как-то скомпоновать(склеить) двоичные данные из наборов Buf по 2 символа:
Buf:=HexToDec(Следующие_2_символа) |
|||
11
Maxus43
25.10.11
✎
13:39
|
какой тайный смысл преследовал создатель когда увеличивал объём картинки в 2 раза при выгрузке кстати?)
|
|||
12
mikecool
25.10.11
✎
13:39
|
если сохранить строку в файл, потом
Новый ДвоичныеДанные(ЭтотФайл) потом ДвоичныеДанные.Записать("1.jpg") - не получится картинка? |
|||
13
maxp77
25.10.11
✎
13:39
|
(11) по-быстрее выгрузку написать известным ему преобразованием картинки в строку
|
|||
14
mikecool
25.10.11
✎
13:40
|
(13) ппц, про объекты для работы с картинками этот автор не знал? ))
|
|||
15
Maxus43
25.10.11
✎
13:41
|
в файле то кстати так и идёт? типа "FAEBD7..."?
|
|||
16
maxp77
25.10.11
✎
13:42
|
(14) это автор мне еще с пренебрежением пишет:
> Что 1С не умеет хранить картинки в базе? В чём проблема? > 1С не имеет функций работы в 16-тиричной системе,и закодировать картинку как строку невозможно? |
|||
17
maxp77
25.10.11
✎
13:43
|
(15) FFD8FFE000104A46494600010201004800480000FF .....
|
|||
18
mikecool
25.10.11
✎
13:45
|
(16) так и ответь - всякую куйню в картинки преобразовывать не может
заюзай тжипег и сохрани файло как патсан |
|||
19
Maxus43
25.10.11
✎
13:46
|
(16) 1с как раз умеет хранить даже фильмы в базе, это автор не умеет
wiki:Шестнадцатеричные_числа |
|||
20
Maxus43
25.10.11
✎
13:47
|
Например, требуется перевести шестнадцатеричное число 5A3 в десятичное. В этом числе 3 цифры. В соответствии с вышеуказанным правилом представим его в виде суммы степеней с основанием 16:
5A316 = 3·160+10·161+5·162 = 3·1+10·16+5·256 = 3+160+1280 = 144310 в 1с напиши алгоритм |
|||
21
Maxus43
25.10.11
✎
13:48
|
(20) + форматирование не правильное, смотри в (19)
|
|||
22
maxp77
25.10.11
✎
13:51
|
(21) как перевести в десятичное - понятно, а как потом полученное десятичное значение в двоичные данные впихнуть, хотя бы в файл этот байт засунуть?
|
|||
23
Maxus43
25.10.11
✎
13:58
|
в файл записывать "Символ(<Код символа>)"?
|
|||
24
maxp77
25.10.11
✎
14:00
|
Попробую через ЗаписьТекста, но сильно сомневаюсь в результате
<Код символа> = HexToDec() Запись=Новый ЗаписьТекста("ХЗ.jpg",КодировкаТекста.ANSI); Запись.Записать(Символ(<Код символа>)); Запись.Закрыть(); |
|||
25
Maxus43
25.10.11
✎
14:03
|
я тож сомневаюсь)
в паскале может написать преобразование? иль в любом языке где есть удобные инструменты работы с файлами? |
|||
26
mikecool
25.10.11
✎
14:04
|
накуя городить огород, если автор паскаля может сделать сразу файло?
прошу прощения за ругательство ) |
|||
27
mikecool
25.10.11
✎
14:04
|
+26 файло = файло картинки
|
|||
28
Maxus43
25.10.11
✎
14:09
|
(26) видимо не может, раз делал преобразование в текст) редкий изврат на мой взгляд...
|
|||
29
mikecool
25.10.11
✎
14:10
|
(28) вот это и бесит иногда, строят из себя невесь что, а нормально выполнить работу не могут ((
|
|||
30
maxp77
25.10.11
✎
16:05
|
Танец с бубном не удался - Unicode, а нужен ANSI - наверное, из-за этого ничего не вышло.
Встроенные функции языка (Script functions) Символ (Char) Синтаксис: Символ(<КодСимвола>) Параметры: <КодСимвола> (обязательный) Тип: Число. Код получаемого символа. Код задается в соответствии с кодировкой Unicode. Если ЗначениеЗаполнено(СтрокаБл) Тогда СтрокаБлДлина = СтрДлина(СтрокаБл); Запись = Новый ЗаписьТекста("D:\TEMP\укоНа", КодировкаТекста.ANSI); Для СчетчикБл = 1 По Окр(СтрокаБлДлина/2) Цикл _Код_символа = HexToDec(Сред(СтрокаБл, 1 + (СчетчикБл - 1)*2, 2)); Запись.Записать(Символ(_Код_символа)); КонецЦикла; Запись.Закрыть(); ВыбранноеИзображение = Новый Картинка("D:\TEMP\укоНа", Ложь); ХранилищеФото = Новый ХранилищеЗначения(ВыбранноеИзображение, Новый СжатиеДанных); КонецЕсли |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |