Я решил вычислить среднее значение из массива изображений. Требуется около 40Гб свободного места.
Подпрограмма №1.
#MAX = 65536
UseJPEGImageEncoder()
Structure PIXEL
Byte.a[3]
EndStructure
OpenConsole()
For i = 1 To #MAX
PrintN(Str(i)+"/"+Str(#MAX))
Image = CreateImage(#PB_Any, 256, 256, 24)
StartDrawing(ImageOutput(Image))
*Buffer = DrawingBuffer()
*LastColor = *Buffer + 256*256*3-SizeOf(PIXEL)
For *Color.PIXEL = *Buffer To *LastColor Step SizeOf(PIXEL)
With *Color
\Byte[0] = Random(255)
\Byte[1] = \Byte[0]
\Byte[2] = \Byte[0]
EndWith
Next
StopDrawing()
SaveImage(Image, Str(i)+".jpg", #PB_ImagePlugin_JPEG, 10)
FreeImage(Image)
NextПодпрограмма №2.
#MAX = 256
UseJPEGImageEncoder()
OpenConsole()
For i = 1 To #MAX
PrintN(Str(i)+"/"+Str(#MAX))
Image = CreateImage(#PB_Any, 8192, 8192, 24)
StartDrawing(ImageOutput(Image))
*Buffer = DrawingBuffer()
*LastColor = *Buffer + 8192*8192*3-1
For *Color.Ascii = *Buffer To *LastColor
*Color\a = Random(255)
Next
StopDrawing()
SaveImage(Image, Str(i)+".jpg", #PB_ImagePlugin_JPEG, 10)
FreeImage(Image)
NextПрограмма подсчёта среднего значения изо цветных изображений 8192х8192.
UseJPEGImageDecoder()
Structure PIXEL
Byte.a[3]
EndStructure
Global Dim Color(256)
For i = 1 To 256
Image = LoadImage(#PB_Any, Str(i)+".jpg")
ResizeImage(Image, 1,1)
StartDrawing(ImageOutput(Image))
CopyMemory(DrawingBuffer(), @Color(i), SizeOf(PIXEL))
StopDrawing()
FreeImage(Image)
Next
For i = 1 To 256
Average + Color(i)
Next
MessageRequester("", Str(Average / 256))
Результат в шестандцатиричную систему счисления и/или разложить на цвета.
В итоге получено среднее значение цвета у файлого массива изо 256 файлов цветных изображений(127,127,127).
Возможно, если делать не JPEG и использовать сведение по ближайшему соседнему, - результат будет отличаться.
Для эксперимента я запустил параллельно генератор изображений градаций серого и генератор цветных изображений. Потом я нашёл среднее значение цвета.
Попробуйте, если интересно, с другими размерами или цветными или градации серого и другим количественным размером файлового массива.
Какие есть соображения по поводу того, что результат - средний цвет между белым и чёрным? Поделитесь.
==
Подсчитал средний цвет у 65536 изображений размеров 256х256 градации серого. Результат: (152, 127, 127).
Отредактировано PSY (31.10.2023 08:38:31)