PureBasic - форум

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » PureBasic - форум » PureBasic для Windows » Генерация палитры


Генерация палитры

Сообщений 1 страница 11 из 11

1

Создание файла палитры.

Код:
File  = CreateFile(#PB_Any, "Palette.pal")
For r = 0 To  255
  For g = 0 To  255
    For b = 0 To  255
      WriteAsciiCharacter(File, r)
      WriteAsciiCharacter(File, g)
      WriteAsciiCharacter(File, b)
    Next
  Next
Next

Конвертация в BMP.

Код:
#PIXEL  = 256 * 256 * 256
Line  = Pow(#PIXEL, 1/2)

Palette = ReadFile(#PB_Any, "Palette.pal")

Macro Get()
  ReadAsciiCharacter(Palette)
EndMacro

Image =  CreateImage(#PB_Any, Line, Line, 24)
StartDrawing(ImageOutput(Image))
  For x = 0 To  Line-1
    For y = 0 To  Line-1
      Plot(x, y,  RGB(Get(),  Get(),  Get()))
    Next
  Next
StopDrawing()
SaveImage(Image,  "Palette.bmp")  

Что-то картинка не соответствует ожидаемому.

0

2

Что ожидается?

0

3

через 16 пикселов по горизонтали происходит новый цикл по одной из переменных

0

4

PSY написал(а):

через 16 пикселов по горизонтали происходит новый цикл по одной из переменных

Нет исходя из содержимого файла Palette.pal.
У вас построение изображения не соответствует данным палитры.

0

5

по 3 байта пишу и по 3 читаю.

0

6

То что пишите и читаете по 3 байта вовсе не означает что точки размещаются в нужных местах.

0

7

последовательно же мне и нужно просто было сохранить всю палитру цветов. подсчитал цвета - все на месте

0

8

Webarion

Это микровыстрел в жёсткий диск

Файл имеет буфер/кеш, даже если пишет по байтам он пишет сначала в память и при заполнении буфера скидывает на жёсткий данные. То есть не пишет каждый байт отдельно. И этот размер буфера ещё можно задать самостоятельно, по умолчанию 4096 байт в PureBasic. Задаётся функцией FileBuffersSize(). Что интересно что это размер кластера по умолчанию.

Отредактировано AZJIO (04.10.2023 21:37:22)

0

9

Когда записать на диск решает система, но можно принудительно произвести запись вызвав функцию FlushFileBuffers().
У функции CreateFile() есть флаг #PB_File_NoBuffering позволяющий отключить буферизацию.

0

10

Webarion
Автор перевода справки не я.

0

11

Webarion
Я ни одной страницы не изменял. Отписываю в теме "Улучшение справки" все недостатки, которые нахожу. Если я начну делать ответвление, то будет двойная работа,  один будет вносить обновления в свой проект справки другой не имея этого обновления будет вносить исправления и у нас будет две недосправки.

Улучшения не являются критичными, грубо говоря при наличии неточностей не приносит убыток, поэтому проще мирится при этом тратя время на свои программы,. Пока нет внутреннего позыва. Но есть позыв делать недостающие примеры в справке, т.е. с десяток примеров я уже предложил, а значит они появятся в следующих справках и будут переведены.

Отредактировано AZJIO (05.10.2023 07:04:23)

0


Вы здесь » PureBasic - форум » PureBasic для Windows » Генерация палитры