Image.putdata принимает одномерную последовательность, а не многомерную последовательность, как в вашем коде.
Т.е. вместо того, чтобы использовать что-то вроде
[[v1, v2, v3],
[v4, v5, v6],
[v7, v8, v9]]
для хранения ваших данных пикселей, которые передаются в putdata, это должно быть
[v1, v2, v3, v4, v5, v6, v7, v8, v9]