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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.05.2014, 12:02   #21
denis76560
Форумчанин
 
Регистрация: 13.01.2010
Сообщений: 121
По умолчанию

Код:
var
j:TJpegImage;
begin
//  Image1.Picture.Graphic := TJpegImage.Create;
//  Image2.Picture.Graphic := TJpegImage.Create;
  j:=TJpegImage.Create;
    Image1.Picture.assign(j);
  j:=TJpegImage.Create;
    Image2.Picture.Assign(j);
end;
пробовал так, тоже. В результате при создании формы получаю - Access Violation.
По идее ничего криминального в коде не вижу при создании TJpegImage. Странно.
Уже голову всю сломал =(
denis76560 вне форума Ответить с цитированием
Старый 03.05.2014, 12:16   #22
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

продолжай ломать голову, если другое не может, то ломай без зазрения совести
eval вне форума Ответить с цитированием
Старый 03.05.2014, 12:22   #23
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
  j:=TJpegImage.Create;
  j.LoadFromFile('e:\11images.jpg');
  Image1.Picture.assign(j);
  j.Free;
Прекрасно работает и просто
Код:
  Image1.Picture.LoadFromFile('e:\11images.jpg');
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 03.05.2014, 13:34   #24
doktor255
Заблокирован
 
Регистрация: 31.03.2011
Сообщений: 976
По умолчанию

Аватар Человечек желает получать картинку из интернета, и отправлять её на Antigate без использования Hdd. Поэтому тут не может быть ни какого Load.
denis76560 Замени это
Код:
Image1.Picture.Graphic := TJpegImage.Create;
на это
Код:
Image1.Picture.Graphic := TBitmap.Create;
Если нужно загнать изображение из потока в Image, сначала грузи изображение в JpegImage

Код:
var
JpegImage: TJpegImage;
begin
JpegImage := TJpegImage.Create;
Stream.position := 0 // в стриме уже есть картинка
JpegImage.LoadFromStream(Stream);
а потом делай так
Код:
 Image1.Picture.Graphic.Assign(JpegImage);
Проверил под D7, работает.
doktor255 вне форума Ответить с цитированием
Старый 03.05.2014, 18:16   #25
denis76560
Форумчанин
 
Регистрация: 13.01.2010
Сообщений: 121
По умолчанию

doktor255, спасибо Вам большое. Все заработало.
Может кому-то пригодится - выкладываю код сюда.


Код:
procedure TForm1.letrasAnguladas(c : string; angulo : integer; nextPos : Integer);
var
   logfont:TLogFont;
   font: Thandle;
begin
   LogFont.lfheight:=30;
   logfont.lfwidth:=10;
   logfont.lfweight:=900;

   LogFont.lfEscapement:=angulo;
   logfont.lfcharset:=1;
   logfont.lfoutprecision:=OUT_TT_ONLY_PRECIS;
   logfont.lfquality:= DEFAULT_QUALITY;
   logfont.lfpitchandfamily:= FF_SWISS;
   logfont.lfUnderline := 0;
   logfont.lfStrikeOut := 0;

   font:=createfontindirect(logfont);

   Selectobject(Image1.canvas.handle,font);

   SetTextColor(Image1.canvas.handle,rgb(0,180,0));
   SetBKmode(Image1.canvas.handle,transparent);

   Image1.canvas.textout(nextPos,Image1.Height div 3,c);
   SetTextColor(Image1.canvas.handle,rgb(Random(255),Random(255),Random(255)));
   deleteobject(font);
end;



procedure TForm1.Button10Click(Sender: TObject);
var
CaptchaRes: String;
s: String;
CaptchaID: Integer;
begin

 strCaptcha:='65348'; ////////// 
 for vX := 1 to Length(strCaptcha) do letrasAnguladas(strCaptcha[vX],Random(600)+1,25*vX-15);

imagedata:=TMemoryStream.Create;
JpegImg := TJpegImage.Create;
Image2.Picture.Graphic := TBitmap.Create;

JpegImg.Assign(Image1.Picture.Bitmap);
JpegImg.SaveToStream(imagedata);
imagedata.position := 0; 

JpegImg.LoadFromStream(imagedata);
Image2.Picture.Graphic.Assign(JpegImg);

  edit9.Text:='Распознавание...';
  Application.ProcessMessages;
  CaptchaID := RecognizeAG(imagedata,edit3.Text,CaptchaRes);
  edit9.Text:=CaptchaRes;
end;

Ребята, всем большое спасибо кто реально помогал, и Eval'у тоже за поддержание хорошего настроения.
Суть моей идеи сделать многопоточную проверку на адекватность распознавания каптч сервисом Antigate.
Так как имея ключ с балансом, при его привязке к IP - он возвращает (Сервер Antigate) вполне адекватный ответ, с типо распознанными символами, однако, как показывает практика, ничего близкого с реально нарисованным на капче словом.
Вот и возникла такая идея.
Многопоточную проверку для проверки самих ключей сервиса на наличие баланса через прокси уже давно реализовал, оставался вопрос только с проверкой на сервере сгенерированного самой программой изображения.
Еще раз всем большое спасибо.

Последний раз редактировалось denis76560; 03.05.2014 в 18:43.
denis76560 вне форума Ответить с цитированием
Старый 03.05.2014, 20:01   #26
doktor255
Заблокирован
 
Регистрация: 31.03.2011
Сообщений: 976
По умолчанию

По коду поясню.
Код:
Image2.Picture.Graphic := TBitmap.Create;
Вот это инициализация графики. Её не нужно делать по 10 раз. Поэтому эту строчку желательно прописать например в OnCreate формы. Ну и на будущее советую не заниматься ерундой, и установить современную среду разработки, а не использовать старьё.

Последний раз редактировалось doktor255; 03.05.2014 в 20:04.
doktor255 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вопрос по компоненту TChart 155hatws Помощь студентам 1 03.12.2011 12:26
Вопрос по компоненту DateTimePicker Dux Компоненты Delphi 5 18.09.2010 23:02
Запись иконок из ехе файлов в imagelist с последующим присвоением картинки компоненту image. xaero93 Помощь студентам 2 13.04.2010 14:45
Вопрос по компоненту MediaPlayer FanAnnGeL Компоненты Delphi 4 17.02.2010 00:42
Вопрос по Image (скачанная картинка не хочет выводиться в Image) Radnor Мультимедиа в Delphi 2 06.07.2009 02:20