Перейти к содержанию
Fire Monkey от А до Я
  • 0

[TBitmap] Загрузка изображений из интернета в приложение


ra.eremeev

Вопрос

Опубликовано

Друзья, выручайте!

 

Уже на сутки "завис"...

 

Приложение под Android должно загружать картинки в TListViewItem (аватарки) с HTTP.

Ресурс доступен. Картинки на нем тоже.

 

Использую iDHTTP (iDHTTP тоже "кидал" на форму и создавал динамически - результат один) и TMemoryStream.

Код ниже.

 

Само приложение на устройстве выдает ошибку: Access violation at address 559E45CC accessing address 00000000

Отладчик выдает: class segmentation fault 11

 

Опытным путем установил, что ошибка, скорее всего, возникает при попытке заполнения TMemoryStream (пробовал TMemoryStream.LoadFromFile - то же самое, хотя приложением TListViewItem.BitMap.LoadFromFile с этим же файлом проходит на ура и все работает).

 

Во всех случаях используются PNG-картинки небольшого размера и разрешения: 20-25 кБ.

В коде адрес картинки указан тестовый осознанно (в приложение картинка по используемому адресу доступна).

 

 

Часть кода:

var item:TListViewItem;
      pic:TMemoryStream;
      idhttp1:tidhttp;
...
idhttp1.Create(Application);
pic:=TMemoryStream.Create;
try
 IdHTTP.Get('http://site.ru/icons/icon.png, pic);
    try
     Item.Bitmap.LoadFromStream(pic);
     except
    end;
    finally
    pic.Free;
    IdHTTP1.Free;
   end;

Вопроса 2:

  1. Что я делаю не так?
  2. Подскажите, пож-та, хороший пример для выполнения такой задачи (желательно с применением потоков - чтобы приложение не висло на период загрузки данных из HTTP).

Спасибо большое!

 

 

Рекомендуемые сообщения

  • 0
  • Модераторы
Опубликовано (изменено)

idhttp1.Create(Application); - что это за бред?

IdHTTP - это откуда взялось?

никогда и никому этот код не показывай

 

берем файлик во вложении подключаем в проекте и пишем

with ListView1.Items.Add do
begin
  Text := 'Text';
  Bitmap.LoadFromUrl('http://site.ru/icons/icon.png');
end;

не проверял, но должно работать. не нужно пихать в поток, там итак уже используется

FMX.Features.Bitmap.Helpers.zip

Изменено пользователем ZuBy
  • 0
Опубликовано

ZuBy, спасибо очередной раз!

 

Все прекрасно работает :)

Обрати внимание, пож-та, в представленном тобой модуле необходимо скорректировать наименование в первой строке Unit...

  • 0
Опубликовано

Использование данной процедуры для загрузки большого числа файлов способно сойти за DDOS-атаку и вызвать блокировки сервером.

Вдруг пригодится...

 

Требует допиливания и исключения инциализаций/разрывов соединений...

 

Здесь затрагивал: http://fire-monkey.ru/topic/2170-zagruzka-failov-iz-interneta/?p=11778 

  • 0
Опубликовано

У меня почему то не работает. Помимо FMX.Features.Bitmap.Helpers пробовал и другие подобные. Ни один на андроид не работает, хотя под Windows все нормально! Приложение либо подвисает, либо вообще ничего не происходит! 

Использую Delphi 10 Seattle, Android 6.0.1

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...