Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Кто писал свои функции для работы с BMP-файлами?
|
|||
|---|---|---|---|
|
#18+
Есть картинка (приложена). Картинка тестовая. Пытаюсь прочитать из неё столбец пикселей. Вычитал, что информация записанна по строкам вверх ногами. Я реализовал такой алгоритм: сместится с начала файла на величину равную bfOffBits + номер столбца который будем читать * 3 (работаем только с 24 файлами, поэтому 3 байта на пиксель). Прочитать 3 байта. Обработать. Сместится на величину равную ширине файла (biWidth) * 3 + biWidth % 4/ Прочитать 3 байта. Повторять пока не упрёмся в верх картинки. Но получается фигня какая-то. Вот прога: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. Вот что она выдаёт при чтёнии 10 столбца: 10 {'r': 253, 'b': 251, 'g': 251} 10 {'r': 0, 'b': 24, 'g': 0} 10 {'r': 0, 'b': 18, 'g': 11} 10 {'r': 0, 'b': 0, 'g': 0} 10 {'r': 255, 'b': 1, 'g': 255} А должно быть всё белым! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2006, 23:45 |
|
||
|
Кто писал свои функции для работы с BMP-файлами?
|
|||
|---|---|---|---|
|
#18+
К библиотекам не отсылать! Ещё вопрос из области арихметики: вес каритнки тестовой должна получаться (10 * 3 + 2) * 5 + 54 = 214 байт. А она 216! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2006, 00:41 |
|
||
|
Кто писал свои функции для работы с BMP-файлами?
|
|||
|---|---|---|---|
|
#18+
Действительно картинка записана вверх ногами. Примерный код, выдран из рабочего, после выдирания не проверен, но идея понятна. Читает из 2,16,256 цветного некомпрессированного БМП файла и записывает в массив байт img.arr по одному пикселу в байт. В документации что-то говорилось о выравнивании границы картинки в случае 2 и 16 цветов, если она не попадает на целое число байт, но уже не помню что. По-моему это учитывается в строчках: bw = bfh.biszim/bfh.bihigh; /* width of the image */ и bfx += bw; Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2006, 04:23 |
|
||
|
Кто писал свои функции для работы с BMP-файлами?
|
|||
|---|---|---|---|
|
#18+
Виноват, вместо "for (j0 = iwr*iwh; j0 >= iwr;)" следует читать "for (j0 = iwr*ihr; j0 >= iwr;)" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2006, 04:28 |
|
||
|
Кто писал свои функции для работы с BMP-файлами?
|
|||
|---|---|---|---|
|
#18+
SarinЕсть картинка (приложена). Картинка тестовая. Пытаюсь прочитать из неё столбец пикселей. Вычитал, что информация записанна по строкам вверх ногами. Не понял тебя, что значит по строкам вверх ногами ? Вся информация хранится в капутере в виде одной большой строки, т.е. независимо от того матрица это или картинка, сначала идет первая строка, вслед за ней идет вторая и т.д. А разбиение на столбцы и другие фигуры программер должен сам программно организовывать. И еще тебе надо ознакомиться с форматом bmp. Картинки хрянятся в большом количестве форматов и каждый их них вполне специфически организован. Ты должен исходить из строки и формата BMP. Желаю удачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2006, 10:59 |
|
||
|
Кто писал свои функции для работы с BMP-файлами?
|
|||
|---|---|---|---|
|
#18+
neskif Не понял тебя, что значит по строкам вверх ногами ? Вся информация хранится в капутере в виде одной большой строки, т.е. независимо от того матрица это или картинка, сначала идет первая строка, вслед за ней идет вторая и т.д. А разбиение на столбцы и другие фигуры программер должен сам программно организовывать. И еще тебе надо ознакомиться с форматом bmp. Картинки хрянятся в большом количестве форматов и каждый их них вполне специфически организован. Ты должен исходить из строки и формата BMP. Желаю удачи. Спасибо за столь ёмкое наставление. Я ознакомился с форматом BMP. Прога будет работать с 24 бит на пиксель. Без палитры. Про одну большую строку знаю. Возникает всего один маленький вопрос: по сколько байт приходится на одну строку? Как это выщитать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2006, 21:18 |
|
||
|
Кто писал свои функции для работы с BMP-файлами?
|
|||
|---|---|---|---|
|
#18+
Sarin Я ознакомился с форматом BMP. Прога будет работать с 24 бит на пиксель. Без палитры. Про одну большую строку знаю. Возникает всего один маленький вопрос: по сколько байт приходится на одну строку? Как это выщитать? Надо понять сколько пикселов в строке, а дальше все подсчитывается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2006, 21:58 |
|
||
|
Кто писал свои функции для работы с BMP-файлами?
|
|||
|---|---|---|---|
|
#18+
если у вас 24 бита на пиксель, значит 3 байта на точку. Следовательно в "строке" из N символов N/3 пикселей. При разрешении картинки в 640х480х24bit получается 480 "строк" по 1440 символов (480*3). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2006, 22:08 |
|
||
|
Кто писал свои функции для работы с BMP-файлами?
|
|||
|---|---|---|---|
|
#18+
Всё. Я разобрался. Длинна строки выравнивается так, чтоб быть кратной 4. Тоесть ширина строки + остаток деления ширины на 4. Смещение до следующего пикселя из столбца n считается так: offset = self.bmpFileHeader["bfOffBits"] + n * 3 + (self.bmpInfoHeader["biWidth"]) * 3 * i + (self.bmpInfoHeader["biWidth"] % 4) * i Где i - номер строки до которой мы добрались. Вот класс, если кому интересно. Язык - питон. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2006, 23:57 |
|
||
|
Кто писал свои функции для работы с BMP-файлами?
|
|||
|---|---|---|---|
|
#18+
Sarin Всё. Я разобрался. Молодец ! Возьми с полочки пирожок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2006, 00:06 |
|
||
|
Кто писал свои функции для работы с BMP-файлами?
|
|||
|---|---|---|---|
|
#18+
Doktor Gradusесли у вас 24 бита на пиксель, значит 3 байта на точку. Следовательно в "строке" из N символов N/3 пикселей. При разрешении картинки в 640х480х24bit получается 480 "строк" по 1440 символов (480*3). А еще бывает компрессированный формат. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2006, 02:56 |
|
||
|
Кто писал свои функции для работы с BMP-файлами?
|
|||
|---|---|---|---|
|
#18+
c127 Doktor Gradusесли у вас 24 бита на пиксель, значит 3 байта на точку. Следовательно в "строке" из N символов N/3 пикселей. При разрешении картинки в 640х480х24bit получается 480 "строк" по 1440 символов (480*3). А еще бывает компрессированный формат. Прога пишется под заказчика. Я могу выставить требование использовать формат, который мне удобен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2006, 21:26 |
|
||
|
Кто писал свои функции для работы с BMP-файлами?
|
|||
|---|---|---|---|
|
#18+
Sarin c127 Doktor Gradusесли у вас 24 бита на пиксель, значит 3 байта на точку. Следовательно в "строке" из N символов N/3 пикселей. При разрешении картинки в 640х480х24bit получается 480 "строк" по 1440 символов (480*3). А еще бывает компрессированный формат. Прога пишется под заказчика. Я могу выставить требование использовать формат, который мне удобен. Я понял, мое замечание о том, что предложенный подсчет байт не всегда правильный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2006, 22:19 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=33554747&tid=1347060]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
130ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
67ms |
get tp. blocked users: |
2ms |
| others: | 236ms |
| total: | 478ms |

| 0 / 0 |
