Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.02.2009, 00:38   #1
prizrak1390
-=PriZraK=-
Форумчанин
 
Аватар для prizrak1390
 
Регистрация: 12.12.2007
Сообщений: 399
По умолчанию RTF > Jpg

Доброе время суток)
Как сконвертировать RTF или TXT файл в JPG картинку?
prizrak1390 вне форума Ответить с цитированием
Старый 06.02.2009, 05:06   #2
goblinyara
Форумчанин
 
Аватар для goblinyara
 
Регистрация: 02.01.2009
Сообщений: 340
По умолчанию

хмм... как вариант - грузите TXT в ListBox, с помощью Canvas.Pixels[x,y] перерисовывайте на Image, и его сохраняйте в файл.... как с RTF - не знаю
DelphiWorld 6. Скачай, поставь, и будет тебе счастье=)
Программирование, как и любовь -- одно слово, за которым скрывается бесконечное множество занятий.
goblinyara вне форума Ответить с цитированием
Старый 06.02.2009, 07:37   #3
Kotofff
Участник клуба
 
Аватар для Kotofff
 
Регистрация: 11.01.2009
Сообщений: 1,917
По умолчанию

Цитата:
Как сконвертировать RTF или TXT файл в JPG картинку?
использовать RichView компонент версии 10 и выше ...
там в дистрибутиве есть пример по Вашему вопросу ...
"Заряженному танку в дуло не смотрят" @Dekmer in WoT
Kotofff вне форума Ответить с цитированием
Старый 06.02.2009, 08:26   #4
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Цитата:
Сообщение от goblinyara Посмотреть сообщение
хмм... как вариант - грузите TXT в ListBox, с помощью Canvas.Pixels[x,y] перерисовывайте на Image, и его сохраняйте в файл.... как с RTF - не знаю
О чем вы собственно не понятно вообще

RTF - это будет всего лишь текст, и данные битмапа можно будет просто перевести в последовательность - хекс строку. Как jpg в битмап перевести уже обсуждалось. Просто если искать уже в известных источниках то чего только можно найти

Код:
uses
   RichEdit;

 // Stream Callback function 
type
   TEditStreamCallBack = function(dwCookie: Longint; pbBuff: PByte;
     cb: Longint; var pcb: Longint): DWORD;
   stdcall;

   TEditStream = record
     dwCookie: Longint;
     dwError: Longint;
     pfnCallback: TEditStreamCallBack;
   end;

 // RichEdit Type 
type
   TMyRichEdit = TRxRichEdit;

 // EditStreamInCallback callback function 
function EditStreamInCallback(dwCookie: Longint; pbBuff: PByte;
   cb: Longint; var pcb: Longint): DWORD; stdcall;
   // by P. Below 
var
   theStream: TStream;
   dataAvail: LongInt;
 begin
   theStream := TStream(dwCookie);
   with theStream do
   begin
     dataAvail := Size - Position;
     Result := 0;
     if dataAvail <= cb then
     begin
       pcb := read(pbBuff^, dataAvail);
       if pcb <> dataAvail then
         Result := UINT(E_FAIL);
     end
     else
     begin
       pcb := read(pbBuff^, cb);
       if pcb <> cb then
         Result := UINT(E_FAIL);
     end;
   end;
 end;

 // Insert Stream into RichEdit 
procedure PutRTFSelection(RichEdit: TMyRichEdit; SourceStream: TStream);
   // by P. Below 
var
   EditStream: TEditStream;
 begin
   with EditStream do
   begin
     dwCookie := Longint(SourceStream);
     dwError := 0;
     pfnCallback := EditStreamInCallBack;
   end;
   RichEdit.Perform(EM_STREAMIN, SF_RTF or SFF_SELECTION, Longint(@EditStream));
 end;

 // Convert Bitmap to RTF Code 
function BitmapToRTF(pict: TBitmap): string;
 // by D3k 
var
   bi, bb, rtf: string;
   bis, bbs: Cardinal;
   achar: ShortString;
   hexpict: string;
   I: Integer;
 begin
   GetDIBSizes(pict.Handle, bis, bbs);
   SetLength(bi, bis);
   SetLength(bb, bbs);
   GetDIB(pict.Handle, pict.Palette, PChar(bi)^, PChar(bb)^);
   rtf := '{\rtf1 {\pict\dibitmap ';
   SetLength(hexpict, (Length(bb) + Length(bi)) * 2);
   I := 2;
   for bis := 1 to Length(bi) do
   begin
     achar := Format('%x', [Integer(bi[bis])]);
     if Length(achar) = 1 then
       achar := '0' + achar;
     hexpict[I - 1] := achar[1];
     hexpict[I] := achar[2];
     Inc(I, 2);
   end;
   for bbs := 1 to Length(bb) do
   begin
     achar := Format('%x', [Integer(bb[bbs])]);
     if Length(achar) = 1 then
       achar := '0' + achar;
     hexpict[I - 1] := achar[1];
     hexpict[I] := achar[2];
     Inc(I, 2);
   end;
   rtf := rtf + hexpict + ' }}';
   Result := rtf;
 end;


 // Example to insert image from Image1 into RxRichEdit1 
procedure TForm1.Button1Click(Sender: TObject);
 var
   SS: TStringStream;
   BMP: TBitmap;
 begin
   BMP := TBitmap.Create;
   BMP := Image1.Picture.Bitmap;
   SS  := TStringStream.Create(BitmapToRTF(BMP));
   try
     PutRTFSelection(RxRichEdit1, SS);
   finally
     SS.Free;
   end;
 end;
Собственно можно предположить, что после вставки сохранить его как текст в файл, или же даже не использовать TRichEdit а просто открыть файл RTF найти место куда записать данные картинки и просто вставить текст форматированный.
BOBAH13 вне форума Ответить с цитированием
Старый 06.02.2009, 08:36   #5
goblinyara
Форумчанин
 
Аватар для goblinyara
 
Регистрация: 02.01.2009
Сообщений: 340
Радость

Цитата:
Сообщение от BOBAH13 Посмотреть сообщение
О чем вы собственно не понятно вообще
хмм... просто как мне показалось - автору топика нужно сделать из текста картинку но вы, видно, не так поняли ну что ж, будем ждать реакции автора и поймём, кто из нас правильней его понял
DelphiWorld 6. Скачай, поставь, и будет тебе счастье=)
Программирование, как и любовь -- одно слово, за которым скрывается бесконечное множество занятий.
goblinyara вне форума Ответить с цитированием
Старый 06.02.2009, 09:16   #6
DeKot
Участник клуба
 
Аватар для DeKot
 
Регистрация: 12.08.2008
Сообщений: 1,977
По умолчанию

Цитата:
RTF - это будет всего лишь текст
- все верно.Далее
любой текст можно представить в графическом формате командой TextOut , придав ему нужные свойства FontColor,FontSize и т.п.Вводим текст в любой компонент графики (скажем в TBitMap) командой TextOut а потом записываем в графический файл.Таким образом решить задачу можно стандартными средствами Delphi .
И не сомневайся даже ... отдых - кайф, работа - лажа!
DeKot вне форума Ответить с цитированием
Старый 06.02.2009, 22:55   #7
prizrak1390
-=PriZraK=-
Форумчанин
 
Аватар для prizrak1390
 
Регистрация: 12.12.2007
Сообщений: 399
По умолчанию

=))) Расскажу,что я делаю вообще....
Вообщем мне нужно текст из richedit сохранить в картинку. Способ которым делаю я не подходит,так как я копирую только видимую область этого компонента...
Код:
image.Canvas.CopyRect(form1.richedit1.ClientRect,form1.Canvas,form1.richedit1.ClientRect);
Метод убогий и как видно не совсем рабочий.Если текст не вмещается весь,то прога без смысла %)
prizrak1390 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
RTF to TXT in Delphi Simply-Art Общие вопросы Delphi 2 07.07.2008 19:37
Текст в формате RTF Mikola Помощь студентам 2 10.08.2007 10:28
RTF Mickle Общие вопросы Delphi 2 03.04.2007 21:34
Помогите с *.rtf файлами WaxeP Общие вопросы Delphi 4 22.02.2007 19:07