Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Media";
Текущий архив: 2009.09.27;
Скачать: [xml.tar.bz2];

Вниз

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

 
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 вся ветка

Форум: "Media";
Текущий архив: 2009.09.27;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.004 c
15-1248515578
Palladin
2009-07-25 13:52
2009.09.27
Права группы на директорию, FreeBSD 7


2-1248340805
belmol
2009-07-23 13:20
2009.09.27
считать все значения edit с формы


2-1248408135
nomad000
2009-07-24 08:02
2009.09.27
выгрузить данные в xml


15-1248695199
Василий Жогарев
2009-07-27 15:46
2009.09.27
Выбор струйника формата А3 подсоветуйте


1-1216893151
Mr.Frog
2008-07-24 13:52
2009.09.27
resize компнента run-time мышью





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский