Прежде всего, привет там!Создание БОЛЬШИХ изображений
затем, немного контекста:
Я на самом деле работает над «Maze генератора». На данный момент я могу создать лабиринты с шириной 18500 и высотой 18500 (что делает меня счастливым !!).
Итак, никаких проблем с генерацией.
Тогда, конечно, я хотел записать их в файлы .jpeg/.bmp или еще.
Итак, для лабиринта 18k5 * 18k5 мне нужно изображение 37k * 37k.
Я сначала пробовал с .jpeg. Это сработало, но выходные файлы были 1.2 GigaBytes большие. У них слишком много времени ... но я могу их открыть.
Поэтому я попытался использовать формат BMP, потому что он позволяет кодировать пиксели по 1 бит каждый. Выходные файлы теперь значительно меньше ... но я не могу их открыть ... Я говорю, что файлы «повреждены или слишком большие».
Я не думаю, что они повреждены, потому что они работали с лабиринтом 10k * 10k (20k * 20k), и он не смог открыть с таким же кодом лабиринт 13k * 13k (26k * 26k изображение).
Так вот код (я использую EasyBMP ОМТ):
int main()
{
HandyMaze labz(MAZE_SIDE, MAZE_SIDE); // Maze generator
Labz* l; // Maze iteself
BMP img;
if (labz.Generate() == false)
{
std::cout << "Derp" << std::endl;
return (1);
}
l = labz.GetFormatedLab();
if (l == 0)
{
std::cout << "Dorp" << std::endl;
return (1);
}
std::cout << "Generated" << std::endl;
std::cout << "Creating Image ..." << std::endl;
img.SetSize(l->w, l->h);
if (img.SetBitDepth(1) == false)
{
std::cout << "Failed to change Depth" << std::endl;
return (1);
}
std::cout << "Filling Image ..." << std::endl;
std::cout << l->w << " " << l->h << std::endl;
for (int i = 0; i < l->w; ++i)
for (int j = 0; j < l->h; ++j)
{
if (l->lab[j][i] == WALL)
{
img(j, i)->Red = 0;
img(j, i)->Green = 0;
img(j, i)->Blue = 0;
img(j, i)->Alpha = 0;
}
else
{
img(j, i)->Red = 255;
img(j, i)->Green = 255;
img(j, i)->Blue = 255;
img(j, i)->Alpha = 0;
}
}
std::cout << "Saving Image ..." << std::endl;
std::stringstream ss;
ss << "Laby-" << MAZE_SIDE << ".bmp";
img.WriteToFile(ss.str().c_str());
return (0);
}
Как вы можете видеть, код рисования очень проста, но все же ... Я что-то отсутствует или я пытаюсь сделать что-то я не могу сделать xD?
Заранее благодарим за ваши предложения.
PS: Первоначальная публикация здесь, я старался быть как можно яснее, но рассказываю, если я сделал что-то не так.
Rel4X
Я считаю, что BMP-файлы должны иметь заголовок (http://en.wikipedia.org/wiki/BMP_file_format#File_structure) – braindf
Привет мозг. Да, и кажется, что мои размеры находятся под максимальным размером: заголовок говорит 4 байта по высоте и ширине и общему размеру. 4 байта подписывается примерно как 2000000000 пикселей. У меня 1369000000 пикселей. –
Попробуйте настроить альфа-канал на 255. –