Как правильнее использовать картинки в программе? Сразу скачать огрромную базу изображений и вшивать их в программу? или делать автоматическую загрузку изображения из сети? Я пока использую второй вариант, но мне не нравится каждый раз при запуске качать что-то из интернета...
1) Загрузка по сети (с pwdatabase.com):
+ Не надо парится с вытаскиванием изображений из клиента, все уже вытащено за нас
+ Не надо тащить изображения вместе с программой
- Сайт не наш, за него мы не отвечаем. А если ляжет? Если закроет доступ с внешних источников? Да и негодное это дело, хотлинки делать.
- Некоторых параноиков может насторожить тот факт, что программа лезет на какой-то там сервер.
2) Загрузка по сети (наш сервер)
+ Плюсы те же
- Надо самому поддерживать базу в актуальном состоянии
- Параноики еще больше возмущаться, ибо прога лезет не на проверенный сайт, а куда-то неясно куда.
3) Таскать всю кипу изображений с программой
+ Изображения будут всегда доступны
- Надо поддерживать актуальность библиотеки каким-то образом у клиента
- Большой вес программы, надо придумывать некоторые хитрости по уменьшению веса
4) Выдирать с клиента при работе
+ не надо поддерживать актуальность какой-либо бд, за это отвечают китайцы
+ вес программы минимален
- Нужен клиент ПВ.
- Программа должна уметь читать elements.data, значит надо искать конфиги
- Надо распаковывать pck файл и оттуда выдирать нужные изображения (видимо, заранее, ибо дело долгое)
- Надо уметь конверитровать/выводить dds файлы (вроде иконки там в таком формате)
Я для себя выбрал третий способ, но с небольшими поправками - например, удаление дубликатов, что снизило вес бд. Ну и другие фишки)
А вообще никто не мешает комбинировать варианты. Самые популярные иконки зашить в прогу, а остальные тягать с сайта
________________
[Ссылки могут видеть только зарегистрированные пользователи. ]-cофт и прочее для комфортной игры в PW.
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
[Ссылки могут видеть только зарегистрированные пользователи. ]
предметы 1-30000 (айди)..
Формат файла gZip архив, внутри склейка...(просто содержимое файлов склеяно)
2 байта кол-во файлов в архиве
дальше как то так...
в цикле от 0 до прочитаного кол-ва...
2 байта размер
если размер меньше 10 байт(по идее везде 0, но!... 10 наверняка) то на момент создания файла - такого итема не существовало, заменяем на итем с id=1 там вопросительный знак...(берем просто ссылку на картинку с id=1)
данные(gif файл), кол-во байт = прочитаный размер.
Воткните под спойлер.. код ужасен, но править уже лень) не нужен мне этот файл...
ссылка на gZip под делфи, на шарпе есть родной класс....
[Ссылки могут видеть только зарегистрированные пользователи. ]
Код:
// Rad XE2-XE5 Load Gif Image From gzip.
Uses
GIFimg;
Procedure LoadGifItemList;
Var
ccf:TFileStream;
v:TMemoryStream;
f:TMemoryStream;
cnt,sz:Word;
i:Integer;
begin
ccf:=TFileStream.Create('Data/ItemImg',fmOpenRead);
v:=TMemoryStream.Create;
GZDecompressStream(ccf,v);
ccf.Free;
f:=TMemoryStream.Create;
v.Position:=0;
v.Read(cnt,2);
GifItemCount:=cnt;
SetLength(GifItemList,cnt+1);
for I := 0 to cnt do
begin
if (i mod 100)=0 then
Begin
End;
v.Read(sz,2);
if sz<10 then
begin
GifItemList[i]:=GifItemList[1];
end else
Begin
f.Clear;
v.Read(z,sz);
f.Write(z,sz);
f.Position:=0;
GifItemList[i].Image:=TGIFImage.Create;
GifItemList[i].Image.LoadFromStream(f);
End;
end;
f.Free;
v.Free;
end;
Добавлено через 3 минуты
Цитата:
Сообщение от N00bSa1b0t
сли какой-нибудь оог-точер - то картинки итемов 1 лвла, на которых обычно точат.
Цитата:
Сообщение от N00bSa1b0t
3) Таскать всю кипу изображений с программой
+ Изображения будут всегда доступны
- Надо поддерживать актуальность библиотеки каким-то образом у клиента
- Большой вес программы, надо придумывать некоторые хитрости по уменьшению веса
Вот нечто подобное и у меня) только с одим лиш исключением, не вся база и не удалены дубли, что кстати легко исправить просто переделав фалй( применить исключение в 10 байт на хранение айди оригинала для дублей)
Последний раз редактировалось ToRcH2565; 14.01.2014 в 21:01.
Причина: Добавлено сообщение
Совпадает с айди предмета - проверил.
[Ссылки могут видеть только зарегистрированные пользователи. ]
[Ссылки могут видеть только зарегистрированные пользователи. ]
________________
Больше не занимаюсь читами, ушёл в серверную часть. Новый ник - int 3.
P.S. Но я всё такой же добрый модератор раздела PW.
База с учётом перевода названий на все 7 языков весит примерно 50 мегов. Работает просто охренительно быстро. Скрипт полного парсинга pwdatabase, чтоб заполнить её с нуля выполняется где-то сутки. Но меня это не парит - результатом я доволен.
3) Таскать всю кипу изображений с программой
+ Изображения будут всегда доступны
- Надо поддерживать актуальность библиотеки каким-то образом у клиента
- Большой вес программы, надо придумывать некоторые хитрости по уменьшению веса
По мне это самый оптимальный вариант. Моя база на 2-х языках весит примерно 10 метров, 80 % массы занимают иконки. А актуальность библиотеки у клиента можно поддерживать с помощью авто-обновлений. Чтобы не мучить pwdatabase.com и себя в ожидании, парсим всё у актуального клиента.
________________
[Ссылки могут видеть только зарегистрированные пользователи. ]