Opened 4 years ago
Closed 4 years ago
#503 closed ожидается проверка (задача сдана)
HW #1
Reported by: | Roman Venediktov | Owned by: | Sokolov Viacheslav |
---|---|---|---|
Component: | HW #1 (BMP) | Version: | 2.0 |
Keywords: | Cc: |
Description
Change History (3)
comment:1 Changed 4 years ago by
Type: | ожидается проверка → ожидаются исправления |
---|
comment:2 Changed 4 years ago by
Type: | ожидаются исправления → ожидается проверка |
---|---|
Version: | 1.0 → 2.0 |
comment:3 Changed 4 years ago by
Resolution: | → задача сдана |
---|---|
Status: | assigned → closed |
load_bmp: в случае, если что-то идет не так, необходимо еще позвать fclose(input)
54 и 8 стоило бы вынести в именованные константы
save_bmp: line_end_size имеет размер не более 4. Выделять на куче незачем, можно было выделять на стэке.
Это место реализовано некорректно, потому что
https://en.cppreference.com/w/c/memory/malloc
If size is zero, the behavior is implementation defined (null pointer may be returned, or some non-null pointer may be returned that may not be used to access storage, but has to be passed to free).
инициализацию пустого изображения стоило бы вынести в отдельную функцию
Makefile: не хватает зависимости hw_01 от obj/bmp.o
здесь опечатка
можно упростить ввод-вывод, если отключить выравнивание полей структур компилятором. Для этого есть, например, https://stackoverflow.com/questions/3318410/pragma-pack-effect
119 rotated_image->bi_x_pels_per_meter = image->bi_y_pels_per_meter;
120 rotated_image->bi_y_pels_per_meter = image->bi_x_pels_per_meter;
я сначала тоже думал, что нужно поменять местами (логично же, при повороте меняются местами x и y), но после более детального изучения кажется, что все же не надо: https://stackoverflow.com/questions/17550545/bmp-image-header-bixpelspermeter . Кажется, это характеристики скорее устройства, чем изображения.
((rotated_image->bi_width * 3 + 3) / 4) * 4
лучше вынести код получения размера с учетом alignment-а в отдельную функцию
в crop неправильно вырезается область (картинка хранится перевернутой)
140 rotated_image->pixels[rotated_image->bi_height - 1 - i][j * 3 + k] = image->pixels[j][i * 3 + k];
здесь можно было бы использовать memcpy
в целом хорошая попытка