DEVO4KA> перерыла пол интернета, где только не искала, но никак не смогла найти как.DEVO4KA> В базе есть crest в clan_data, но как эти данные превратить в понятные для PHP я не знаю, что делать? где искать подскажите пожалуйста.
crest в clan_data/ally_data содержит (в бинарном виде) .dds-файл (DirectDraw Surface), который пригоден для непосредственного рендеринга клиентом (в таком виде приходит от клиента при установке/смене значка, в таком виде и отдаётся клиенту чтобы тот его показывал окружающим). штатные сёрфилки его как картинку не понимают, поэтому чтоб показать на странице - его нужно конвертить во что-то более тривиальное. кроме того, эта дрянь (dds) ещё и всегда квадратная (дополнена полями), то есть помимо конвертирования его ещё и нужно обрезать до известных размеров (16х12 для клана, 8х12 для алли).
я, когда задался такой же целью, вышел из положения использованием фриварной либы FreeImage, которая среди прочих форматов умеет читать этот самый dds.
т.к. времени было мало и доводить до ума было лень
, с её использованием сваял за 5 минут донехочу тупой конвертор+кроппер dds-файла в png-файл, всунул его в батчер который вытягивает значки по по одному из базы в файл, и конвертирует+режет полученое уже в
получилось
Energy :: Lineage II Server , по-нанайски внутри, но достаточно снаружи, чтоб не дёргать каждый раз базу и не заморачиваться с кэшированием при отдаче, поскольку оно только моё и у меня пока не те объёмы. будут те - сделаю нормально.
делюсь:
code text
#include <stdlib.h>
#include "FreeImage.h"
int main(int argc, char *argv[]){
FIBITMAP *orig, *crop;
FreeImage_Initialise(TRUE);
orig = FreeImage_Load(FIF_DDS, "crest.dds", 0);
if (crop = FreeImage_Copy(orig,0,4,8,16)) {
FreeImage_Save(FIF_PNG, crop, "crest.png", 0);
}
FreeImage_DeInitialise();
}
форум отсейфквотил двойные кавычки, бэкслеши перед ними поубирать перед употреблением.
либу брать с
The FreeImage Project
кроп - для значка алли 8х12 (смещения задаются абсолютно). для клана - изменить соответственно.