Функция io.encode_png
Функция io.encode_png принимает тензор изображения
и возвращает скалярный строковый тензор, содержащий
изображение, закодированное в формате PNG. Первым
параметром передается тензор с формой
[height, width, channels], где каналов может быть
1, 2, 3 или 4. Вторым параметром
можно передать уровень сжатия compression от -1
до 9. Значение -1 использует настройки
сжатия по умолчанию (обычно уровень 6).
Значения пикселей должны лежать в диапазоне от 0
до 255 и иметь целочисленный тип. Функция
поддерживает типы uint8 и uint16.
Синтаксис
tf.io.encode_png(image, [compression])
Пример
Давайте закодируем небольшое трехканальное изображение в PNG:
import tensorflow as tf
image = tf.constant([
[[255, 0, 0], [0, 255, 0], [0, 0, 255]],
[[255, 255, 0], [0, 255, 255], [255, 0, 255]]
], dtype=tf.uint8)
encoded = tf.io.encode_png(image)
print(encoded.dtype)
print(encoded.shape)
Результат выполнения кода:
<dtype: 'string'>
(1,)
Пример
Давайте закодируем изображение с максимальным уровнем сжатия:
import tensorflow as tf
image = tf.constant([
[[255, 0, 0], [0, 255, 0], [0, 0, 255]],
[[255, 255, 0], [0, 255, 255], [255, 0, 255]]
], dtype=tf.uint8)
encoded = tf.io.encode_png(image, compression=9)
res = tf.io.decode_png(encoded)
print(res.shape)
Результат выполнения кода:
(2, 3, 3)
Пример
Давайте закодируем одноканальное изображение в оттенках серого:
import tensorflow as tf
image = tf.constant([
[[0], [128], [255]],
[[64], [192], [32]]
], dtype=tf.uint8)
encoded = tf.io.encode_png(image)
res = tf.io.decode_png(encoded, channels=1)
print(res.shape)
print(res.numpy().reshape(-1))
Результат выполнения кода:
(2, 3, 1)
[ 0 128 255 64 192 32]
Смотрите также
-
функцию
decode_png,
которая декодирует PNG-изображение в тензор -
функцию
encode_jpeg,
которая кодирует изображение в формат JPEG -
функцию
write_file,
которая записывает данные в файл -
функцию
encode_base64,
которая кодирует строку в формат base64