У меня есть изображение, хранящееся в памяти в виде необработанных байтов, т.е. char*
указывая на место в памяти данных изображения. Теперь мне нужно как-то проверить, достоверны ли данные изображения.
В настоящее время я пробовал просто записать байты в файл. Я попытался сбросить в 3 типа файлов, но не повезло:
std::ofstream ofs;
ofs.open("Image.raw", std::ofstream::out);
ofs.write((char*)imgData, imageInfo.imageLen);
ofs.close();
// Have also tried "Image.tiff" and "Image.ppm"
Есть ли способ просмотреть содержимое? Я просто пишу этот код на платформе Win. Несколько лет назад я помню, как делал то же самое на MAC OS X, что давало успешные результаты!
Вы можете записать это как RGB в двоичном виде, как у вас уже есть — скажем, в файл с именем image.rgb
,
Тогда используйте ImageMagick
, который устанавливается в большинстве дистрибутивов Linux и доступен для OSX и Windows для преобразования его в PNG, JPEG или что-то более распространенное:
convert -size 300x400 -depth 8 image.rgb result.png
или же
convert -size 300x400 -depth 8 image.rgb result.jpg
Вам нужно будет сказать ImageMagick
размеры изображения, как указано выше, потому что они, очевидно, не встроены в необработанный файл, как это было бы в формате JPEG или PNG с заголовком.
Если имя файла, которое вы выбираете, не заканчивается на .rgb, вам нужно будет добавить к нему префикс RGB: вот так
convert -size ... RGB:something.bin result.png