Получение цикломатической сложности в.NET

Прежде всего, PIL поддерживает только 8-битные изображения на канал - хотя Подушка (форк PIL) поддерживает гораздо больше форматов , включая более высокую битовую глубину. Формат JPEG определяется только как 8-битный на канал.

Следовательно, вызов Image.open() для JPEG в PIL вернет 8-битный массив, поэтому любые операции с отдельными пикселями будут выполняться как эквивалент арифметики uint8_t в вспомогательном представлении. Поскольку максимальное значение в uint8_t равно 256, вся ваша арифметика обязательно должна быть по модулю 256.

Если вы хотите избежать этого, вам нужно преобразовать представление в более высокую битовую глубину, такую ​​как 16bpp или 32bpp. Вы можете сделать это с помощью кода NumPy, например:

img16 = np.array(img, dtype=np.uint16)
# or
img32 = np.array(img, dtype=np.uint32)

, который даст вам желаемую расширенную точность.

Однако - ваш пример кода показывает, что вы пытаетесь зашифровать и расшифровать данные изображения. В этом случае вы действительно хотите использовать арифметику по модулю! Вам просто нужно больше изучить реальные алгоритмы шифрования.

5
задан M4N 26 April 2011 в 21:00
поделиться

2 ответа

Я не делаю - Visual Studio имеет какие-либо API того вида? - но вычисления цикломатической сложности довольно легко. Жандарм мог бы быть Вашим ответом.

-1
ответ дан 15 December 2019 в 01:11
поделиться

Я использую NDepend для материала как этот. Можно создать запросы CQL в NDepend и выполнить их.
Пример:

SELECT METHODS  WHERE CC > 8

возвращает методы с цикломатической сложностью, больше, чем 8.

2
ответ дан 15 December 2019 в 01:11
поделиться