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

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

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

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

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

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

Ладно, спасибо за советы, попробую разобраться с дебаггером.
denis76560 вне форума Ответить с цитированием
Старый 01.05.2014, 18:23   #12
XE5
Заблокирован
 
Регистрация: 02.03.2014
Сообщений: 439
По умолчанию

Цитата:
Но при попытке даже загрузить из TMemoryStream в Image2 вылетает вышеописанная ошибка
Прежде чем лить в графику поток, её нужно инициализировать ровно так же, как к примеру инициализирутся поток, прежде чем в него льются данные.
Код:
image1.Picture.Graphic := TJpegImage.Create;
И нужно ещё
Код:
imagedata.position := 0;
Делать каждый раз перед считыванием картинки из потока. То есть и в проверочной заливке в Image2, и в процедуре отправки потока на сервер.

Последний раз редактировалось XE5; 01.05.2014 в 18:39.
XE5 вне форума Ответить с цитированием
Старый 01.05.2014, 19:03   #13
denis76560
Форумчанин
 
Регистрация: 13.01.2010
Сообщений: 121
По умолчанию

Цитата:
Сообщение от XE5 Посмотреть сообщение
Прежде чем лить в графику поток, её нужно инициализировать ровно так же, как к примеру инициализирутся поток, прежде чем в него льются данные.
Код:
image1.Picture.Graphic := TJpegImage.Create;
И нужно ещё

Делать каждый раз перед считыванием картинки из потока. То есть и в проверочной заливке в Image2, и в процедуре отправки потока на сервер.
Спасибо большое, уже несколько часов с этим потерял.
Код:
image1.Picture.Graphic := TJpegImage.Create;
Код:
imagedata.position := 0;
Про это даже не знал.
Сейчас буду пробовать.
denis76560 вне форума Ответить с цитированием
Старый 01.05.2014, 19:29   #14
denis76560
Форумчанин
 
Регистрация: 13.01.2010
Сообщений: 121
По умолчанию

Попробовал, Если сделать как посоветовал XE5, то в процедуре рисования капчи уже эксэпшн в строке
Код:
 Selectobject(Image1.canvas.handle,font);
Can only modify an image if contains a bitmap.
Потом, после продолжения исполнения срабатывает Эксэпшн AV на той же строке.

Код:
procedure TForm1.Button9Click(Sender: TObject);
var
   vx:integer;
   strCaptcha:string;
  jpgImg: TJPEGImage;
  imagedata:TMemoryStream;
begin
   imagedata:=TMemoryStream.Create;
   jpgImg := TJPEGImage.Create;
   image1.Picture.Graphic := TJpegImage.Create;
   imagedata.position := 0;

 strCaptcha:='65348';
 for vX := 1 to Length(strCaptcha) do letrasAnguladas(strCaptcha[vX],Random(600)+1,25*vX-15);
   jpgImg.Assign(Image1.Picture.Bitmap);
   jpgImg.SaveToStream(imagedata);
   Image1.Picture.Graphic.SaveToStream(imagedata);
  imagedata.position := 0;
   Image2.Picture.Graphic.LoadFromStream(imagedata); 
end;
denis76560 вне форума Ответить с цитированием
Старый 01.05.2014, 21:23   #15
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Selectobject(Image1.canvas.handle,f ont);
Это что? Зачем?
Можно узнать, почему используется Image, если тебе изображение все равно нужно отправлять по сети? Не проще ли сразу на канве TJPEGImage рисовать?
Или если у него нет канвы - рисовать на канве TBitmap, а потом ассигновать в Чпег?
Т.е. зачем морочиться с визуальным компонентом?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 02.05.2014, 03:41   #16
XE5
Заблокирован
 
Регистрация: 02.03.2014
Сообщений: 439
По умолчанию

Цитата:
Т.е. зачем морочиться с визуальным компонентом?
Чтоб визуально видеть, что будет отсылаться на антигейт. А второй имадж чтоб убедиться, что в стрим поток нормально сохранилось изображение. Вторая задача полюбому излишняя.
denis76560 Из приведённого тобой кода вижу, что у тебя в голове каша. Прикрепляю к сообщению тестовый проект, где показываю как можно работать с визуальным Image, невизуальный JpegImage, и потоком. Изучай.
Вложения
Тип файла: zip Image.zip (59.5 Кб, 10 просмотров)
XE5 вне форума Ответить с цитированием
Старый 02.05.2014, 09:59   #17
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Бес меня попутал. Я подумал что парень webServer свой пишет...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 03.05.2014, 11:33   #18
denis76560
Форумчанин
 
Регистрация: 13.01.2010
Сообщений: 121
По умолчанию

XE5, спасибо, обработал напильничком код чтоб запустилось под моей Delphi 7.
Но в Вашем примере при создании формы получаю Access Violation
при
Код:
procedure TForm1.FormCreate(Sender: TObject);
begin
  Image1.Picture.Graphic := TJpegImage.Create; 
  Image2.Picture.Graphic := TJpegImage.Create;
end;
denis76560 вне форума Ответить с цитированием
Старый 03.05.2014, 11:41   #19
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Если не ошибаюсь Image1.Picture.Graphic совместим только с Bitmap. Впрочем в ХЕ версиях это наверное не имеет значения.
Если модуль jpeg у тебя уже подключен и эта ошибка все же вылазит, думаю не стоит выполнять такие операции с Image.
или попробуй так:
Код:
  j:=TJpegImage.Create;
    Image1.Picture.assing(j); 
  j:=TJpegImage.Create;
    Image2.Picture.Assign(j);
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 03.05.2014, 11:50   #20
denis76560
Форумчанин
 
Регистрация: 13.01.2010
Сообщений: 121
По умолчанию

Stilet,спасибо, jpeg подключен, сейчас попробую Ваш вариант.
denis76560 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 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