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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.03.2017, 19:26   #1
Pcrepair
Форумчанин
 
Регистрация: 04.01.2011
Сообщений: 260
По умолчанию Хранение графических файлов(ЖПЕГ) в переменной

Добрый день. Есть следующая ситуация :
- программа по УРЛ загружает множество картинок с сайтов записывает их в указанный каталог на ЖД под своими собственными именами. все очень наглядно, можно просмотреть, если нужно, картинки
- на текущем этапе уже не нужно просматривать картинки, и значит не нужно записывать их на ЖД. лучше сразу в ГлобПерем.

Вопрос : какого типа нужно использовать переменную, учитывая что :
- файлы графические(бинарные?)
- размер файла от 1 до 1000 кб
- число файлов - тысячи
- общий объем загрузки может состовлять ?сотни мегабайт
- желательно чтобы метод был универсальный(веб-страницы то же чтоб можно было сохранять)
- не было потенциальной возможности сбоя(из за типа переменной) при хранении данных в ОЗУ
Pcrepair вне форума Ответить с цитированием
Старый 05.03.2017, 20:25   #2
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,761
По умолчанию

А чем Вам родной для Delphi класс TJPEGImage не угодил?
FaTaL вне форума Ответить с цитированием
Старый 05.03.2017, 20:51   #3
Pcrepair
Форумчанин
 
Регистрация: 04.01.2011
Сообщений: 260
По умолчанию

хорошо бы сделать более универсальный метод. на удаленную перспективу. чтоб еще раз не изобретать велосипед
Pcrepair вне форума Ответить с цитированием
Старый 05.03.2017, 21:00   #4
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,761
По умолчанию

Тогда напишите зачем Вам вообще эти JPEG файлы в программе.
FaTaL вне форума Ответить с цитированием
Старый 06.03.2017, 14:33   #5
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,550
По умолчанию

Вот заведем переменную размером в 1Тб - и все вопросы решим. Ну и что, что в компе ОЗУ 1Гб? Мы же храним не в ОЗУ, а в переменной !
digitalis вне форума Ответить с цитированием
Старый 06.03.2017, 14:39   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

А переменная - динамический массив например. И что с ними делать?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 06.03.2017, 18:53   #7
Pcrepair
Форумчанин
 
Регистрация: 04.01.2011
Сообщений: 260
По умолчанию

спасибо за внимание, еще раз, прям сейчас :
- многопоточные загрузчики, под управление диспетчера потоков, грузят в указанный каталог на ЖД графические файлы разных типов и размеров
- по окончании загрузки имена файлов записываются в список ТСтрингЛист
- в цикле ДЛЯ файлы вызываются по имени и анализируются по указанным параметрам (размер файла, тип файла, ширина-высота файла) и ИМЕНА файлов сортируются в списке по правилам
- файл с первым именем в списке(с самым большим индексом) вызывается, обрабатывается и сохраняется в другом каталоге с другим именем
- в первом каталоге все файлы удаляются
Следующий цикл загрузки картинок, и так тыщи циклов

мне не нравится первый пункт, запись файлов на ЖД. оно совершенно не нужно. вопрос в какой потомок ТСтрингс(или куда еще) и как записать множество самых разных типов файлов. но только не надо догадки тут постить. если нет реального опыта, писать не надо.
Pcrepair вне форума Ответить с цитированием
Старый 06.03.2017, 19:10   #8
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Ну в TList или TObjectList, или в массив, это смотря как будешь работать с этим списком объектов. Почему объектов - а как будешь размеры например выдергивать? По хакерски или со свойств объекта? Так что навряд ли без TJpegImage или аналогов для других типов картинок. На счет не надо постить догадки - надо вопрос правильно задавать, правильный вопрос как минимум половина ответа. Ну и сам понимаешь - память у компа ограничена ))
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 06.03.2017 в 19:14.
Аватар вне форума Ответить с цитированием
Старый 06.03.2017, 19:37   #9
Pavia
Лис
Старожил
 
Аватар для Pavia
 
Регистрация: 18.09.2015
Сообщений: 2,409
По умолчанию

TMemoryStream
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал .
Pavia вне форума Ответить с цитированием
Старый 06.03.2017, 20:07   #10
arriah
Пользователь
 
Регистрация: 09.08.2015
Сообщений: 62
По умолчанию

А зачем их загонять в переменную?
Ты говоришь загружает фалы с инента, допустим через httpsen:

HTTP.HTTPMethod('GET',ссылка_на_кар тинку)

Все, она уже в памяти, дале можно ее скинуть на диск:

HTTP.Document.SaveToFile ('имя_файла').

Зачем тогда сохранять загруженные файлы на диск, чтобы потом их обратно загонять в память? Вот прямо в потоке и обрабатывай что надо - и сохраняй куда нужно
Завидую крокодилам! Они даже ходят лежа!
arriah вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Хранение данных в переменной serauto79 PHP 17 28.06.2015 20:07
Эскизы графических файлов в OpenPictureDialog Loveb Компоненты Delphi 4 22.11.2010 11:03
Лента графических файлов бел Помощь студентам 1 13.04.2009 10:15
Конвертирование графических форматов файлов ALEX_RAS Помощь студентам 21 02.11.2008 17:46
Открытия графических файлов Kocapb Общие вопросы C/C++ 3 01.12.2007 19:11