Что нового

Вставка изображения в RichEdit

AngrySpoon

Новичок
Сообщения
15
Репутация
0
Господа, вопрос.
Имеется RichEdit, в него нужно вставить картинку в формате .gif.
Попытка вставить .bmp увенчалась успехом, через преобразование к rtf:
Код:
Func ReadBmpToRtf($sBmpFilspc)
    Local $hFile, $sRtf
    $hFile = FileOpen($sBmpFilspc, 16)
    If FileRead($hFile, 2) <> "0x424D" Then Return SetError(1, 0, "")
    FileRead($hFile, 12)
    $sRtf = '{\rtf1{\pict\dibitmap ' & Hex(FileRead($hFile)) & '}}'
    FileClose($hFile)
    Return $sRtf
EndFunc   ;==>ReadBmpToRtf



Как-то можно привести .gif к rtf? Либо сконвертировать .gif в .bmp?


Добавлено:
Сообщение автоматически объединено:

Раскрыв картинку через rtf, увидел след структуру:
Код:
{\rtf1{\pict\picscalex100\picscaley100\piccropl0\piccropr0\piccropt0\piccropb0
 010009000003b702000000003f01000000000400000003010800050000000b0200000000050000000c0230004400030000001e00040000000701040004000000
070104000800000026060f000600544e505006013f010000410b8600ee002f004300000000002f0043000000000028000000430000002f000000010001000000
0000000000000000000000000000000000000000000000000000ffffff0000000000000000000000000000000000000000000000000000000000000000000000
00000c00000000000000000000000a00000000000000000000000201c0000000000000000000027c80000000000000000000017c800000000000000000000100
80000000000000000000030080000000000000000000000080000000000000000000008180000000000000000000000000000000000000000000000000000000
0000000000003fffc00018001800000000001fffc00014001400000000001803c003c4000478000000000c00c00144000428000000000600c000820002100000
000003000000420002080000000001800760463cf60800000000018004d2400820480000000000c0046181042130000000000060042000042000000000000070
02200003e0000000000000f00130000120000000000001c000d00001200000000000038000000000a00000000000070080000000a000000000000e0180000000
6000000000001c01800000002000000000003fff8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000070000000000000000000000008000000000000000000000008000000000000000000000030000000000000000000000010
00000000000000000000000800000000000000000000007000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000003f010000410bc60088002f004300000000002f0043000000000028000000430000002f0000000100010000000000
000000000000000000000000000000000000000000000000ffffff00ffffffffffffffffe0010101ffffffffffffffffe0010101ffffffffffffffffe0010101
f3ffffffffffffffe0010101f5ffffffffffffffe0010101fdfe3fffffffffffe0010101fd837fffffffffffe0010101fe837fffffffffffe0010101feff7fff
ffffffffe0010101fcff7fffffffffffe0010101ffff7fffffffffffe0010101ff7e7fffffffffffe0010101ffffffffffffffffe0010101ffffffffffffffff
e0010101c0003fffe7ffe7ffe0010101e0003fffebffebffe0010101e7fc3ffc3bfffb87e0010100f3ff3ffebbfffbd7e0010101f9ff3fff7dfffdefe0010101
fcffffffbdfffdf7e0010101fe7ff89fb9c309f7e0010101fe7ffb2dbff7dfb7e0010101ff3ffb9e7efbdecfe0010101ff9ffbdffffbdfffe0010101ff8ffddf
fffc1fffe0010101ff0ffecffffedfffe0010101fe3fff2ffffedfffe0010101fc7fffffffff5fffe0010101f8ff7fffffff5fffe0010001f1fe7fffffff9fff
e0000101e3fe7fffffffdfffe0010101c0007fffffffffffe0010101ffffffffffffffffe0010101ffffffffffffffffe0010100ffffffffffffffffe0000000
ffffffffffffffffe0010101ff8fffffffffffffe0010101fff7ffffffffffffe0010101fff7ffffffffffffe0010101ffcfffffffffffffe0010101ffefffff
ffffffffe0000101fff7ffffffffffffe0010101ff8fffffffffffffe0010101ffffffffffffffffe0010101ffffffffffffffffe0010101ffffffffffffffffe0010100ffffffffffffffffe00101010800000026060f000600544e50500701040000002701ffff030000000000}}

я правильно понимаю, что код должен выглядеть так:
Код:
$sRtf&='{\rtf1{\pict\picscalex100\picscaley100\piccropl0\piccropr0\piccropt0\piccropb0'
    $sRtf&='\picw1773\pich1244\picwgoal1005\pichgoal705\wmetafile8\bliptag-1752947142{\*\blipuid 9784263a9d45219c8d3bef79f0ae0596}'&Hex(FileRead($hFile))&'}}'


?
 

MnM

Post-Hardcore
Сообщения
679
Репутация
90
я правильно понимаю, что код должен выглядеть так:
Увы такая вставка тоже не работает с конвертацией gif файла. Я уже чуть более 1 часа лазаю по различным поисковым системам и ничего подобного не находил кроме кода php(и то там не совсем наверное решили задачу). Может это не возможно из-за того что она "движущиеся" :smile:


Добавлено:
Сообщение автоматически объединено:

Либо сконвертировать .gif в .bmp
На счет этого - конвертировать наверное можно но только скорее всего еденичный кадр, что потеряет полноценность gif изображения и станет картинкой
 

AZJIO

Меценат
Меценат
Сообщения
2,879
Репутация
1,194
AngrySpoon
Ищи в _GDIPlus, например _GDIPlus_ImageLoadFromFile, по крайней мере сохранить в BMP удастся без проблем. А чтобы выполнить в памяти ищи по форуму.
На всякий случай сообщай что функцию взял из _GUICtrlRichEdit_CanRedo, это экономит другим время.
 
Автор
A

AngrySpoon

Новичок
Сообщения
15
Репутация
0
MnM
это не возможно из-за того что она "движущиеся"
Про это речи нет, у меня статическое изображение) если вручную присваивать
Код:
$teest&='{\rtf1{\pict\picscalex100\picscaley100\piccropl0\piccropr0\piccropt0\piccropb0'
$teest&='\picw1773\pich1244\picwgoal1005\pichgoal705\wmetafile8\bliptag-1752947142{010009000003b702000000003f01000000000400000003010800050000000b0200000000050000000c0230004400030000001e00040000000701040004000000'
$teest&='070104000800000026060f000600544e505006013f010000410b8600ee002f004300000000002f0043000000000028000000430000002f000000010001000000'
$teest&='0000000000000000000000000000000000000000000000000000ffffff0000000000000000000000000000000000000000000000000000000000000000000000'
$teest&='00000c00000000000000000000000a00000000000000000000000201c0000000000000000000027c80000000000000000000017c800000000000000000000100'
$teest&='80000000000000000000030080000000000000000000000080000000000000000000008180000000000000000000000000000000000000000000000000000000'
$teest&='0000000000003fffc00018001800000000001fffc00014001400000000001803c003c4000478000000000c00c00144000428000000000600c000820002100000'
$teest&='000003000000420002080000000001800760463cf60800000000018004d2400820480000000000c0046181042130000000000060042000042000000000000070'
$teest&='02200003e0000000000000f00130000120000000000001c000d00001200000000000038000000000a00000000000070080000000a000000000000e0180000000'
$teest&='6000000000001c01800000002000000000003fff8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
$teest&='00000000000000000000000000000070000000000000000000000008000000000000000000000008000000000000000000000030000000000000000000000010'
$teest&='00000000000000000000000800000000000000000000007000000000000000000000000000000000000000000000000000000000000000000000000000000000'
$teest&='0000000000000000000000000000000000003f010000410bc60088002f004300000000002f0043000000000028000000430000002f0000000100010000000000'
$teest&='000000000000000000000000000000000000000000000000ffffff00ffffffffffffffffe0010101ffffffffffffffffe0010101ffffffffffffffffe0010101'
$teest&='f3ffffffffffffffe0010101f5ffffffffffffffe0010101fdfe3fffffffffffe0010101fd837fffffffffffe0010101fe837fffffffffffe0010101feff7fff'
$teest&='ffffffffe0010101fcff7fffffffffffe0010101ffff7fffffffffffe0010101ff7e7fffffffffffe0010101ffffffffffffffffe0010101ffffffffffffffff'
$teest&='e0010101c0003fffe7ffe7ffe0010101e0003fffebffebffe0010101e7fc3ffc3bfffb87e0010100f3ff3ffebbfffbd7e0010101f9ff3fff7dfffdefe0010101'
$teest&='fcffffffbdfffdf7e0010101fe7ff89fb9c309f7e0010101fe7ffb2dbff7dfb7e0010101ff3ffb9e7efbdecfe0010101ff9ffbdffffbdfffe0010101ff8ffddf'
$teest&='fffc1fffe0010101ff0ffecffffedfffe0010101fe3fff2ffffedfffe0010101fc7fffffffff5fffe0010101f8ff7fffffff5fffe0010001f1fe7fffffff9fff'
$teest&='e0000101e3fe7fffffffdfffe0010101c0007fffffffffffe0010101ffffffffffffffffe0010101ffffffffffffffffe0010100ffffffffffffffffe0000000'
$teest&='ffffffffffffffffe0010101ff8fffffffffffffe0010101fff7ffffffffffffe0010101fff7ffffffffffffe0010101ffcfffffffffffffe0010101ffefffff'
$teest&='ffffffffe0000101fff7ffffffffffffe0010101ff8fffffffffffffe0010101ffffffffffffffffe0010101ffffffffffffffffe0010101ffffffffffffffffe0010100ffffffffffffffffe00101010800000026060f000600544e50500701040000002701ffff030000000000'
$teest&='}}'
- в richedit картинка отображается.
Если я гружу из файла
Код:
Func ReadBmpToRtf($sBmpFilspc)
    Local $hFile, $sRtf
    $hFile = FileOpen($sBmpFilspc, 16)
    If FileRead($hFile, 2) <> "0x424D" Then Return SetError(1, 0, "")
    FileRead($hFile, 12)
    $sRtf = '{\rtf1{\pict\picscalex100\picscaley100\piccropl0\piccropr0\piccropt0\piccropb0' _
			& '\picw1773\pich1244\picwgoal1005\pichgoal705\wmetafile8\bliptag-1752947142{'& Hex(FileRead($hFile)) & '}}'
    FileClose($hFile)
    Return $sRtf
EndFunc   ;==>ReadBmpToRtf
- то пустота(

AZJIO
Попытка была, в это случае формируется полностью заполненная черным картинка.
Функция эта почти во всех примерах с RichEdit'ом в справке
 

AZJIO

Меценат
Меценат
Сообщения
2,879
Репутация
1,194
AngrySpoon
А всё учёл? Сдвиг на 12 байт, далее бинарные данные преобразуются в Hex.

Что то у меня с твоего Hex-кода BMP не получился
Код:
$teest='424DD82012000000000036'
$teest&='00010009000003b702000000003f01000000000400000003010800050000000b0200000000050000000c0230004400030000001e00040000000701040004000000'
$teest&='070104000800000026060f000600544e505006013f010000410b8600ee002f004300000000002f0043000000000028000000430000002f000000010001000000'
$teest&='0000000000000000000000000000000000000000000000000000ffffff0000000000000000000000000000000000000000000000000000000000000000000000'
$teest&='00000c00000000000000000000000a00000000000000000000000201c0000000000000000000027c80000000000000000000017c800000000000000000000100'
$teest&='80000000000000000000030080000000000000000000000080000000000000000000008180000000000000000000000000000000000000000000000000000000'
$teest&='0000000000003fffc00018001800000000001fffc00014001400000000001803c003c4000478000000000c00c00144000428000000000600c000820002100000'
$teest&='000003000000420002080000000001800760463cf60800000000018004d2400820480000000000c0046181042130000000000060042000042000000000000070'
$teest&='02200003e0000000000000f00130000120000000000001c000d00001200000000000038000000000a00000000000070080000000a000000000000e0180000000'
$teest&='6000000000001c01800000002000000000003fff8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
$teest&='00000000000000000000000000000070000000000000000000000008000000000000000000000008000000000000000000000030000000000000000000000010'
$teest&='00000000000000000000000800000000000000000000007000000000000000000000000000000000000000000000000000000000000000000000000000000000'
$teest&='0000000000000000000000000000000000003f010000410bc60088002f004300000000002f0043000000000028000000430000002f0000000100010000000000'
$teest&='000000000000000000000000000000000000000000000000ffffff00ffffffffffffffffe0010101ffffffffffffffffe0010101ffffffffffffffffe0010101'
$teest&='f3ffffffffffffffe0010101f5ffffffffffffffe0010101fdfe3fffffffffffe0010101fd837fffffffffffe0010101fe837fffffffffffe0010101feff7fff'
$teest&='ffffffffe0010101fcff7fffffffffffe0010101ffff7fffffffffffe0010101ff7e7fffffffffffe0010101ffffffffffffffffe0010101ffffffffffffffff'
$teest&='e0010101c0003fffe7ffe7ffe0010101e0003fffebffebffe0010101e7fc3ffc3bfffb87e0010100f3ff3ffebbfffbd7e0010101f9ff3fff7dfffdefe0010101'
$teest&='fcffffffbdfffdf7e0010101fe7ff89fb9c309f7e0010101fe7ffb2dbff7dfb7e0010101ff3ffb9e7efbdecfe0010101ff9ffbdffffbdfffe0010101ff8ffddf'
$teest&='fffc1fffe0010101ff0ffecffffedfffe0010101fe3fff2ffffedfffe0010101fc7fffffffff5fffe0010101f8ff7fffffff5fffe0010001f1fe7fffffff9fff'
$teest&='e0000101e3fe7fffffffdfffe0010101c0007fffffffffffe0010101ffffffffffffffffe0010101ffffffffffffffffe0010100ffffffffffffffffe0000000'
$teest&='ffffffffffffffffe0010101ff8fffffffffffffe0010101fff7ffffffffffffe0010101fff7ffffffffffffe0010101ffcfffffffffffffe0010101ffefffff'
$teest&='ffffffffe0000101fff7ffffffffffffe0010101ff8fffffffffffffe0010101ffffffffffffffffe0010101ffffffffffffffffe0010101ffffffffffffffffe0010100ffffffffffffffffe00101010800000026060f000600544e50500701040000002701ffff030000000000'

$hFile = FileOpen(@ScriptDir & '\file.bmp', 18)
FileWrite($hFile, Binary('0x' & $teest))
FileClose($hFile)
 
Автор
A

AngrySpoon

Новичок
Сообщения
15
Репутация
0
AZJIO
а если так
Код:
$teest=''
		$teest&='{\rtf1{\pict\picscalex100\picscaley100\piccropl0\piccropr0\piccropt0\piccropb0'
		$teest&='\picw1773\pich1244\picwgoal1005\pichgoal705\wmetafile8\bliptag-1752947142{010009000003b702000000003f01000000000400000003010800050000000b0200000000050000000c0230004400030000001e00040000000701040004000000'
		$teest&='070104000800000026060f000600544e505006013f010000410b8600ee002f004300000000002f0043000000000028000000430000002f000000010001000000'
		$teest&='0000000000000000000000000000000000000000000000000000ffffff0000000000000000000000000000000000000000000000000000000000000000000000'
		$teest&='00000c00000000000000000000000a00000000000000000000000201c0000000000000000000027c80000000000000000000017c800000000000000000000100'
		$teest&='80000000000000000000030080000000000000000000000080000000000000000000008180000000000000000000000000000000000000000000000000000000'
		$teest&='0000000000003fffc00018001800000000001fffc00014001400000000001803c003c4000478000000000c00c00144000428000000000600c000820002100000'
		$teest&='000003000000420002080000000001800760463cf60800000000018004d2400820480000000000c0046181042130000000000060042000042000000000000070'
		$teest&='02200003e0000000000000f00130000120000000000001c000d00001200000000000038000000000a00000000000070080000000a000000000000e0180000000'
		$teest&='6000000000001c01800000002000000000003fff8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
		$teest&='00000000000000000000000000000070000000000000000000000008000000000000000000000008000000000000000000000030000000000000000000000010'
		$teest&='00000000000000000000000800000000000000000000007000000000000000000000000000000000000000000000000000000000000000000000000000000000'
		$teest&='0000000000000000000000000000000000003f010000410bc60088002f004300000000002f0043000000000028000000430000002f0000000100010000000000'
		$teest&='000000000000000000000000000000000000000000000000ffffff00ffffffffffffffffe0010101ffffffffffffffffe0010101ffffffffffffffffe0010101'
		$teest&='f3ffffffffffffffe0010101f5ffffffffffffffe0010101fdfe3fffffffffffe0010101fd837fffffffffffe0010101fe837fffffffffffe0010101feff7fff'
		$teest&='ffffffffe0010101fcff7fffffffffffe0010101ffff7fffffffffffe0010101ff7e7fffffffffffe0010101ffffffffffffffffe0010101ffffffffffffffff'
		$teest&='e0010101c0003fffe7ffe7ffe0010101e0003fffebffebffe0010101e7fc3ffc3bfffb87e0010100f3ff3ffebbfffbd7e0010101f9ff3fff7dfffdefe0010101'
		$teest&='fcffffffbdfffdf7e0010101fe7ff89fb9c309f7e0010101fe7ffb2dbff7dfb7e0010101ff3ffb9e7efbdecfe0010101ff9ffbdffffbdfffe0010101ff8ffddf'
		$teest&='fffc1fffe0010101ff0ffecffffedfffe0010101fe3fff2ffffedfffe0010101fc7fffffffff5fffe0010101f8ff7fffffff5fffe0010001f1fe7fffffff9fff'
		$teest&='e0000101e3fe7fffffffdfffe0010101c0007fffffffffffe0010101ffffffffffffffffe0010101ffffffffffffffffe0010100ffffffffffffffffe0000000'
		$teest&='ffffffffffffffffe0010101ff8fffffffffffffe0010101fff7ffffffffffffe0010101fff7ffffffffffffe0010101ffcfffffffffffffe0010101ffefffff'
		$teest&='ffffffffe0000101fff7ffffffffffffe0010101ff8fffffffffffffe0010101ffffffffffffffffe0010101ffffffffffffffffe0010101ffffffffffffffffe0010100ffffffffffffffffe00101010800000026060f000600544e50500701040000002701ffff030000000000'
		$teest&='}}'

_GUICtrlRichEdit_AppendText($hRichEdit, $teest)

то картинка даже выводится)


Добавлено:
Сообщение автоматически объединено:

я потому и спрашиваю тут, что уверен, что учтено не все

блин( только что сделал вывод в обычный edit - файл вот такой:
Код:
47494638396143002F0077003121FE1A536F6674776172653A204D6963726F736F6674204F66666963650021F90401000000002C020004003B002800830000000000000605050A08090807070B090A0303030504040B0A0A0907080706060C0A0B09080801020301020301020304DD10C80982A538EBCD7B0F5E288E1A489EE876A56C5BB93069C67466CD75AEEF7CEFFF4097E0462CAE829CE12089E335358400615378E68E9DE8B4E403593583800049F192C263D1E5EB31B13505C301D196606576142250F84CDE1C4528094B816529388018035B8676894F4D8987154F080A216E662F9C2A18917914020B996BA08F7F378FA69F140A7D3493239213841C0B06B3ADBA7F138C1D0C98999D8ABDBD2097B70C0109A547C5A195170746D58578C59B180AD5D5B032D07764E3E42791D0E5BBE9365FE841EDEB9E829DF1C6F3EE3FEDE2E5DAF51FF8E42200003B


Добавлено:
Сообщение автоматически объединено:

Не очень хорошо видно, но с первых же символов понятно, что нужен не hex( причем я пробовал и не hex доставать из файла - результат не менее отрицательный((
 
Верх