34 logger->error(
"Tried to parse XRIT image but no image header!");
38 if (type == XRIT_FY4_AGRI)
40 logger->trace(
"Using FY-4x Specific Image Header!");
43 size_t required_buffer_size = (image_structure_record.bit_per_pixel > 8 ? 2 : 1) * image_structure_record.columns_count * image_structure_record.lines_count;
44 if (required_buffer_size <= file.lrit_data.size() - primary_header.total_header_length)
46 image::Image image(&file.lrit_data[primary_header.total_header_length], image_structure_record.bit_per_pixel > 8 ? 16 : 8, image_structure_record.columns_count,
47 image_structure_record.lines_count, 1);
53 logger->error(
"File is an image but the file is too small!");
61 size_t required_buffer_size = (image_structure_record.bit_per_pixel > 8 ? 2 : 1) * image_structure_record.columns_count * image_structure_record.lines_count;
62 if (required_buffer_size <= file.lrit_data.size() - primary_header.total_header_length)
64 image::Image image(&file.lrit_data[primary_header.total_header_length], image_structure_record.bit_per_pixel > 8 ? 16 : 8, image_structure_record.columns_count,
65 image_structure_record.lines_count, 1);
67 if (type == XRIT_HIMAWARI_AHI)
69 if (image_structure_record.bit_per_pixel == 16)
72 image::Image image2(16, image_structure_record.columns_count, image_structure_record.lines_count, 1);
74 for (
long long int i = 0; i < image_structure_record.columns_count * image_structure_record.lines_count; i++)
75 image2.
set(i, ((&file.lrit_data[primary_header.total_header_length])[i * 2 + 0] << 8 | (&file.lrit_data[primary_header.total_header_length])[i * 2 + 1]));
79 if (image2.
get(0) >= 16383)
82 for (
long long int i = 0; i < image_structure_record.columns_count * image_structure_record.lines_count; i++)
83 image.set(i, image.get(i) << 2);
85 else if (image2.
get(0) >= 4095)
88 for (
long long int i = 0; i < image_structure_record.columns_count * image_structure_record.lines_count; i++)
89 image.set(i, image.get(i) << 4);
94 for (
long long int i = 0; i < image_structure_record.columns_count * image_structure_record.lines_count; i++)
95 image.set(i, image.get(i) << 6);
104 logger->error(
"File is an image but the file is too small!");
image::Image getImageFromXRITFile(xrit_file_type_t type, XRITFile &file)
This converts a xRIT file (given its type) into an image object handling missing-specific details and...
Definition get_img.h:28