-
Здравствуйте. Подскажите пожалуста как можно решить данную задачу. Необходимо поверх заданного каким-либо образом изображения вывести какие-либо цифры или изображения меньше размером, а потом полученный результат сохранить в файл. Данная процедура должна производиться где-то около 3000 раз, каждый раз накладывая разные цифпы и картинки и сохраняя в новый файл.
Я в этом дуб дубом, так что пожалуйста подскажите с помощью чего это можно сделать и как.
-
Необходимо писать Transform Filter, который будет накладывать OSD информацию на видео, ну а потом записывать в файл или выводит на экран... Все это DirectShow. Примеры Transform фильтра есть в DSpack, там же заголовочные базовых классов, описание в SDK. Если Вам, конечно, все это программно надо... Можно также воспользоваться интерфейсом (Sample Grabber Filter) ISampleGrabberCB и методом SampleCB - он напрямую пишет в видеопоток, но лучше первый вариант.
-
накладывать нужно картинки?
-
Извините я наверное неправильно написал. Под словом изображение имелись ввиду русунки, а не видео. Т.е. рисунки поверх рисунков.
-
а форматы рисунков какие?
-
> Den (14.11.07 13:38) [3]
Это можно сделать с помощью обычного TBitmap, если не стоит задача отображения. Перед этим имеющиеся файлы формата X преобразуются в формат bmp, а затем обратно в формат X или другой.
-
-
-
> просто я даже не знаю с какого конца взяться за дело.
Вот в этом то помощь и нужна, я незнаю как это сделать. Я же не прошу всё сделать за меня, просто подскажите какие компоненты и функции надо использовать для этого господа мастера.
ЗЫ: Я не программист, а инженер. Просто увлекался этим на первом курсе. А программа нужна для друга, который постоянно раскидывает это всё вручную, вот и хочу помочь.
-
> [8] Den (14.11.07 18:19) > Я же не прошу всё сделать за меня, просто подскажите какие > компоненты и функции надо использовать для этого
[5] уже не подсказка?
-
> [5] уже не подсказка
как раз сейчас про TBitmap и читаю. Но не занимаясь этим без малого 4 года это довольно сложно. Потому помощи и попросил,
-
А вот как именно нарисовать цифры и второй рисунок на первом я не пойму. Разъясните если не сложно. вот начало test:=TBitmap.Create;
test.LoadFromFile('1.bmp'); а как дальше?
-
ага, tbitmap.canvas.draw подошло для второй картинки, но как цифры всёравно не допру.
-
спрошу поточнее. Есть ли какой нибудь способ нарисовать там цифры кроме как сделать набор картинок от 0 до 9 и уже из них получать необходимое число?
-
tbitmap.canvas.textout
-
> [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; Вообщем думаю разберешься.... Хотя может быть программа уже готова? :)
-
> homm © (14.11.07 20:08) [14] > tbitmap.canvas.textout
спасибо за подсказку.
> {RASkov} (14.11.07 20:18) [15] Вот от нечего делать "слепил" > для тебя "примерчик"...
большое спасибо за пример.
> Вообщем думаю разберешься.... Хотя может быть программа > уже готова? :)
почти, только сделал цифры картинками.:)
-
Удалено модератором
|