Я пытаюсь прочитать файл изображения и масштабировать его, умножая каждый байт на масштаб его уровней пикселей на некоторый абсолютный коэффициент. Я не уверен, что я делаю это правильно, хотя -масштабирование изображения с помощью C
void scale_file(char *infile, char *outfile, float scale)
{
// open files for reading
FILE *infile_p = fopen(infile, 'r');
FILE *outfile_p = fopen(outfile, 'w');
// init data holders
char *data;
char *scaled_data;
// read each byte, scale and write back
while (fread(&data, 1, 1, infile_p) != EOF)
{
*scaled_data = (*data) * scale;
fwrite(&scaled_data, 1, 1, outfile);
}
// close files
fclose(infile_p);
fclose(outfile_p);
}
Что заставляет меня, как сделать каждый байт умножение (шкала 0-1.0 поплавок) - я уверен, что я либо чтение это неправильно или отсутствует что-то большое. Кроме того, данные считаются неподписанными (0-255). Пожалуйста, не судите мой бедный код :)
благодаря
Вы хотите его масштабировать, как при изменении размера изображения или что? – uray
просто измените значения пикселей, а не измените размер всего изображения. – sa125
Существует не какой-либо стандартный формат файла изображения, который не будет уничтожен этим кодом. Они не просто содержат blob байтов, которые представляют пиксели. Есть заголовок и метаданные, пиксельные данные часто сжимаются. Взгляните на ImageMagick. –