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

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

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.08.2009, 11:27   #1
mihab2009
Пользователь
 
Регистрация: 28.07.2009
Сообщений: 18
По умолчанию Соединение 2х картинок

Здравствуйте! Подскажите пожалуйста как можно соединить две картинки одинакового размера, чтобы получилось примерно вот так: Заранее спасибо
mihab2009 вне форума Ответить с цитированием
Старый 16.08.2009, 11:48   #2
SalasAndriy
Форумчанин Подтвердите свой е-майл
 
Аватар для SalasAndriy
 
Регистрация: 01.11.2007
Сообщений: 157
По умолчанию

думаю как-то вот так:
Код:
procedure ImagePlus(BMP1, BMP2: TBitmap; var BMPNew: TBitmap);
begin
  BMPNew.Width:= BMP1.Width + BMP2.Width;
  BMPNew.Height:= BMP1.Height;

  BMPNew.Canvas.Draw(0, 0, BMP1);
  BMPNew.Canvas.Draw(BMP1.Width, 0, BMP2);
end;
SalasAndriy вне форума Ответить с цитированием
Старый 16.08.2009, 12:59   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а поиск слабо?
я выкладывал пример.
(рядом тема была)
http://programmersforum.ru/attachmen...7&d=1247070266
EXE не запускать(тот что в архиве...если есть не помню)
компиль из сорцов
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 16.08.2009 в 13:04.
Пепел Феникса вне форума Ответить с цитированием
Старый 16.08.2009, 14:20   #4
mihab2009
Пользователь
 
Регистрация: 28.07.2009
Сообщений: 18
По умолчанию

SalasAndriy, Пепел Феникса большое спасибо, теперь разобрался.
У меня еще вот такой вопрос, никак не могу понять: функция recognize посылает картинку на сервер, после того как она выполняется, программа больше не может перезаписать картинку так как файл занят, подскажите пожалуйста как его можно закрыть или удалить, пробовал DeleteFile(fileName) - не удаляет. И если закомментить строку "multi.AddFile('file',filename,ftyp e);", то все нормально перезаписывает.

Код:

function recognize(filename: string; apikey: string; is_phrase: boolean;
is_regsense: boolean; is_numeric: boolean; min_len: integer;
 max_len: integer): string;
var
ftype,tmpstr,captcha_id: String;
i: integer;
http: TIdHTTP;
multi: Tidmultipartformdatastream;
begin
if FileExists(filename)=false then begin result:='ERROR: file not found'; exit; end;

ftype:='image/pjpeg';
if strpos(Pchar(filename),'jpg')<>nil then ftype:='image/pjpeg';
if strpos(Pchar(filename),'gif')<>nil then ftype:='image/gif';
if strpos(Pchar(filename),'png')<>nil then ftype:='image/png';

multi:=Tidmultipartformdatastream.Create;
multi.AddFormField('method','post');
multi.AddFormField('key',apikey);
multi.AddFile('file',filename,ftype);
if is_phrase=true then multi.AddFormField('phrase','1');
if is_regsense=true then multi.AddFormField('regsense','1');
if is_numeric=true then multi.AddFormField('numeric','1');
if min_len>0 then multi.AddFormField('min_len',inttostr(min_len));
if max_len>0 then multi.AddFormField('max_len',inttostr(max_len));
http:=TIdHTTP.Create(nil);
tmpstr:=http.Post('http://ac-service.info/in.php',multi);
http.Free;
captcha_id:='';
if strpos(Pchar(tmpstr),'ERROR_')<>nil then begin result:=tmpstr; exit; end;
if strpos(Pchar(tmpstr),'OK|')<>nil then captcha_id:=AnsiReplaceStr(tmpstr,'OK|','');
if captcha_id='' then result:='ERROR: bad captcha id';
for i:=0 to 20 do
  begin
  Application.ProcessMessages;
  sleep(5000);
  http:=TIdHttp.Create(nil);
  tmpstr:=http.Get('http://ac-service.info/res.php?key='+apikey+'&action=get&id='+captcha_id);
  http.Free;
  if strpos(Pchar(tmpstr),'ERROR_')<>nil then begin result:=tmpstr; exit; end;
  if strpos(Pchar(tmpstr),'OK|')<>nil then
    begin
    result:=AnsiReplaceStr(tmpstr,'OK|','');
    exit;
    end;
  Application.ProcessMessages;
  end;
result:='ERROR_TIMEOUT';
end;

Последний раз редактировалось mihab2009; 16.08.2009 в 14:23.
mihab2009 вне форума Ответить с цитированием
Старый 16.08.2009, 14:28   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

попробуй поставить
multi.free;
после первого http.Free;
(просто вижу что далее он не используется)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 16.08.2009, 14:37   #6
mihab2009
Пользователь
 
Регистрация: 28.07.2009
Сообщений: 18
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
попробуй поставить
multi.free;
после первого http.Free;
(просто вижу что далее он не используется)
Все заработало, большое спасибо.
mihab2009 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Просмоторщик картинок sting Мультимедиа в Delphi 7 10.06.2009 09:41
Просмоторщик картинок sting Помощь студентам 0 08.06.2009 19:53
Эффекты картинок Andrey1433 PHP 1 17.03.2008 02:07
соединение ben95 Общие вопросы Delphi 5 03.02.2008 04:20
Соединение с БД Angel_666 БД в Delphi 9 04.05.2007 16:10