Как описано в руководстве GD, следующий код всегда создает изображения палитры:
$image = GD::Image->newFromPngData($mydata);
В то время как следующее производит изображения истинного цвета:
$image = GD::Image->newFromPngData($mydata,1);
Однако я хочу сделать несколькотип автоматического определения:
Используйте палитру для "8-битной цветовой карты png", но используйте truecolor для файлов "8-битной / цветной RGB png".
Я ожидал, что это будет по умолчанию,но это не так.
Я не нашел подсказки в руководстве по libgd, что это возможно.Возможно ли извлечь эту информацию из самих данных, возможно, вручную считав информацию из заголовка png?
Чтобы сделать это более понятным, приведем пример кода, который ничего не обнаруживает автоматически:
#!/usr/bin/perl
use GD;
$image = GD::Image->newFromPng($ARGV[0]);
if ($image->isTrueColor()) {
print "truecolor\n";
} else {
print "indexed\n";
}