Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.09.27;
Скачать: CL | DM;

Вниз

Вывод изображения повер другого и сохранение всего этого в файл.   Найти похожие ветки 

 
Den   (2007-11-14 10:09) [0]

Здравствуйте.
Подскажите пожалуста как можно решить данную задачу.
Необходимо поверх заданного каким-либо образом изображения вывести какие-либо цифры или изображения меньше размером, а потом полученный результат сохранить в файл. Данная процедура должна производиться где-то около 3000 раз, каждый раз накладывая разные цифпы и картинки и сохраняя в новый файл.

Я в этом дуб дубом, так что пожалуйста подскажите с помощью чего это можно сделать и как.


 
Михей   (2007-11-14 10:46) [1]

Необходимо писать Transform Filter, который будет накладывать OSD информацию на видео, ну а потом записывать в файл или выводит на экран... Все это DirectShow. Примеры Transform фильтра есть в DSpack, там же заголовочные базовых классов, описание в SDK. Если Вам, конечно, все это программно  надо...  Можно также воспользоваться интерфейсом (Sample Grabber Filter) ISampleGrabberCB и методом SampleCB - он напрямую пишет в видеопоток, но лучше первый вариант.


 
antonn ©   (2007-11-14 12:35) [2]

накладывать нужно картинки?


 
Den   (2007-11-14 13:38) [3]

Извините я наверное неправильно написал.
Под словом изображение имелись ввиду русунки, а не видео.
Т.е. рисунки поверх рисунков.


 
antonn ©   (2007-11-14 13:57) [4]

а форматы рисунков какие?


 
Jeer ©   (2007-11-14 15:00) [5]


> Den   (14.11.07 13:38) [3]


Это можно сделать с помощью обычного TBitmap, если не стоит задача отображения.
Перед этим имеющиеся файлы формата X преобразуются в формат bmp, а затем обратно в формат X или другой.


 
Den   (2007-11-14 16:09) [6]

Постараюсь объяснить как можно более подробно, просто я даже не знаю с какого конца взяться за дело.

Есть фоновая картинка.(http://img248.imageshack.us/img248/1662/85395026xa5.jpg).
Есть картинка значка(http://img135.imageshack.us/img135/3355/89877732ob8.jpg).
И есть некий массив чисел.
В итоге надо получить что-то типа этого(http://img135.imageshack.us/img135/5440/97630245ct2.jpg) в отдельно графическом файле на жёстком диске.
И такие файлы должны делаться пока в массиве не закончаться числа.
Формат картинок фактически не важен.

Помогите пожалуйста.
Если не трудно то хоть с небольшими разъяснениями. Если единственное что на  мою просьбу можно ответить это rtfm,то если не затруднит дайте ссылку на нужный fm :)
И если можно хоть небольшой пример в виде кода.


 
homm ©   (2007-11-14 17:50) [7]

> [6] Den   (14.11.07 16:09)
> Есть фоновая картинка.(http://img248.imageshack.us/img248/1662/85395026xa
> 5.jpg).
> Есть картинка значка(http://img135.imageshack.us/img135/3355/89877732ob8.
> jpg).
> И есть некий массив чисел.
> В итоге надо получить что-то типа этого(http://img135.imageshack.us/img13
> 5/5440/97630245ct2.jpg) в отдельно графическом файле на
> жёстком диске.
> И такие файлы должны делаться пока в массиве не закончаться
> числа.
> Формат картинок фактически не важен.

Ну ТЗ ты написал, осталось огласить цену.

Как ты пытался то, покажи, а то в чем помошь нужна — не понятно.


 
Den   (2007-11-14 18:19) [8]


> просто я даже не знаю с какого конца взяться за дело.


Вот в этом то помощь и нужна, я незнаю как это сделать.
Я же не прошу всё сделать за меня, просто подскажите какие компоненты и функции надо использовать для этого господа мастера.

ЗЫ: Я не программист, а инженер. Просто увлекался этим на первом курсе.
А программа нужна для друга, который постоянно раскидывает это всё вручную, вот и хочу помочь.


 
homm ©   (2007-11-14 18:40) [9]

> [8] Den   (14.11.07 18:19)
> Я же не прошу всё сделать за меня, просто подскажите какие
> компоненты и функции надо использовать для этого

[5] уже не подсказка?


 
Den   (2007-11-14 18:52) [10]


> [5] уже не подсказка

как раз сейчас про TBitmap и читаю.
Но не занимаясь этим без малого 4 года это довольно сложно.
Потому помощи и попросил,


 
Den   (2007-11-14 19:07) [11]

А вот как именно нарисовать цифры и второй рисунок на первом я не пойму.
Разъясните если не сложно.
вот начало
test:=TBitmap.Create;
test.LoadFromFile("1.bmp");

а как дальше?


 
Den   (2007-11-14 19:17) [12]

ага, tbitmap.canvas.draw подошло для второй картинки, но как цифры всёравно не допру.


 
Den   (2007-11-14 19:22) [13]

спрошу поточнее.
Есть ли какой нибудь способ нарисовать там цифры кроме как сделать набор картинок от 0 до 9 и уже из них получать необходимое число?


 
homm ©   (2007-11-14 20:08) [14]

tbitmap.canvas.textout


 
{RASkov}   (2007-11-14 20:18) [15]

> [13] Den   (14.11.07 19:22)

Вот от нечего делать "слепил" для тебя "примерчик"...
Кинь на форму 1 кнопку(Button1) и 1 чекбокс(CheckBox1)
пропиши обработчики OnCreate для формы и OnClick для кнопки:
procedure TForm1.FormCreate(Sender: TObject);
begin
 Button1.Left:=0; Button1.Top:=0;
 CheckBox1.Left:=80; CheckBox1.Top:=4; CheckBox1.Width:=140;
 CheckBox1.Caption:="Сохранить в Lotto.bmp";
 Width:=50*9+30; Height:=Button1.Height+50*3+30+GetSystemMetrics(SM_CYCAPTION);
end;

procedure TForm1.Button1Click(Sender: TObject);
var BFon, BLogo: TBitmap; C, R, N: Byte; Rc: TRect; Bt: set of Byte;
begin
 BLogo:=TBitmap.Create;
 try
  //Готовим лого-картинку
  with BLogo do begin
   Width:=50;
   Height:=50;
   Canvas.Rectangle(Canvas.ClipRect);
   Canvas.Brush.Color:=clInfoBk;
   Canvas.Pen.Width:=2;
   Canvas.Pen.Color:=clRed;
   Canvas.Ellipse(5, 5, 45, 45);
   Canvas.Font.Style:=[fsBold];
   Canvas.Font.Color:=clNavy;
   Canvas.TextOut(10, 18, "Lotto");
  end;
  BFon:=TBitmap.Create;
  try
   //Тут "лепим" все картину в целом
   with BFon do begin
    Width:=50*9;
    Height:=50*3;
    Canvas.Font.Name:="Times New Roman";
    Canvas.Font.Size:=25;
    for C:=0 to 8 do
     for R:=0 to 2 do begin
      //Если истина то рисуем цифирку
      if Random(5)<2 then begin
       Rc:=Rect(50*C, 50*R, 50+50*C, 50+50*R);
       Canvas.Rectangle(Rc);
       repeat
        N:=1+Random(99);
       until not (N in Bt);
       Include(Bt, N);
       DrawText(Canvas.Handle, PChar(IntToStr(N)), -1, Rc, DT_SINGLELINE or DT_CENTER or DT_VCENTER);
      end else Canvas.Draw(50*C, 50*R, BLogo); //иначе лого
     end;
   end;
   Canvas.Draw(10, Button1.Height+10, BFon);
   if CheckBox1.Checked then BFon.SaveToFile(ExtractFilePath(Application.ExeName)+"Lotto.bmp");
  finally
   BFon.Free;
  end;
 finally
  BLogo.Free;
 end;
end;

Вообщем думаю разберешься.... Хотя может быть программа уже готова? :)


 
Den   (2007-11-14 21:39) [16]


> homm ©   (14.11.07 20:08) [14]
> tbitmap.canvas.textout

спасибо за подсказку.

> {RASkov}   (14.11.07 20:18) [15]
Вот от нечего делать "слепил"
> для тебя "примерчик"...

большое спасибо за пример.

> Вообщем думаю разберешься.... Хотя может быть программа
> уже готова? :)

почти, только сделал цифры картинками.:)


 
имя   (2007-12-13 18:16) [17]

Удалено модератором



Страницы: 1 вся ветка

Текущий архив: 2009.09.27;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.017 c
2-1248173443
Pavel
2009-07-21 14:50
2009.09.27
Перемещение Image в ScrollBox


15-1248562850
Художник
2009-07-26 03:00
2009.09.27
Помогите перевести код на паскаль


15-1248636256
KilkennyCat
2009-07-26 23:24
2009.09.27
ВМФ!


2-1248451922
Альберт
2009-07-24 20:12
2009.09.27
Работа с time_t


2-1248165639
bag
2009-07-21 12:40
2009.09.27
рисовать в ondrawcell