Я решил вычислить среднее значение из массива изображений. Требуется около 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)