summaryrefslogtreecommitdiff
path: root/html/download/im_info.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'html/download/im_info.cpp')
-rw-r--r--html/download/im_info.cpp203
1 files changed, 0 insertions, 203 deletions
diff --git a/html/download/im_info.cpp b/html/download/im_info.cpp
deleted file mode 100644
index f9106fd..0000000
--- a/html/download/im_info.cpp
+++ /dev/null
@@ -1,203 +0,0 @@
-/* IM 3 sample that returns information about a file.
-
- Needs "im.lib".
-
- Usage: im_info <file_name>
-
- Example: im_info test.tif
-*/
-
-#include <im.h>
-#include <im_util.h>
-#include <im_binfile.h>
-
-#include <stdio.h>
-
-void PrintError(int error)
-{
- switch (error)
- {
- case IM_ERR_OPEN:
- printf("Error Opening File.\n");
- break;
- case IM_ERR_MEM:
- printf("Insuficient memory.\n");
- break;
- case IM_ERR_ACCESS:
- printf("Error Accessing File.\n");
- break;
- case IM_ERR_DATA:
- printf("Image type not Suported.\n");
- break;
- case IM_ERR_FORMAT:
- printf("Invalid Format.\n");
- break;
- case IM_ERR_COMPRESS:
- printf("Invalid or unsupported compression.\n");
- break;
- default:
- printf("Unknown Error.\n");
- }
-}
-
-int FindZero(imbyte* data, int count)
-{
- for (int i = 0; i < count; i++)
- {
- if (data[i] == 0)
- return 1;
- }
- return 0;
-}
-
-char* AttribData2Str(const void* data, int data_type)
-{
- static char data_str[50] = "";
-
- switch(data_type)
- {
- case IM_BYTE:
- sprintf(data_str, "%3d", (int)(*((imbyte*)data)));
- break;
- case IM_USHORT:
- sprintf(data_str, "%5d", (int)(*((imushort*)data)));
- break;
- case IM_INT:
- sprintf(data_str, "%5d", *((int*)data));
- break;
- case IM_FLOAT:
- sprintf(data_str, "%5.2f", (double)(*((float*)data)));
- break;
- case IM_CFLOAT:
- {
- float *c = (float*)data;
- sprintf(data_str, "%5.2g, %5.2f", (double)*c, (double)*(c+1));
- }
- break;
- }
-
- return data_str;
-}
-
-char* GetSizeDesc(double *size)
-{
- char* size_desc;
-
- if (*size < 1024)
- size_desc = "b";
- else
- {
- *size /= 1024;
-
- if (*size < 1024)
- size_desc = "Kb";
- else
- {
- *size /= 1024;
- size_desc = "Mb";
- }
- }
-
- return size_desc;
-}
-
-unsigned long FileSize(const char* file_name)
-{
- imBinFile* bfile = imBinFileOpen(file_name);
- if (!bfile) return 0;
-
- unsigned long file_size = imBinFileSize(bfile);
-
- imBinFileClose(bfile);
- return file_size;
-}
-
-void PrintImageInfo(const char* file_name)
-{
- printf("IM Info\n");
- printf(" File Name:\n %s\n", file_name);
-
- int error;
- imFile* ifile = imFileOpen(file_name, &error);
- if (!ifile)
- {
- PrintError(error);
- return;
- }
-
- double file_size = FileSize(file_name);
- printf(" File Size: %.2f %s\n", file_size, GetSizeDesc(&file_size));
-
- char format[10];
- char compression[20];
- int image_count;
- imFileGetInfo(ifile, format, compression, &image_count);
-
- char format_desc[50];
- imFormatInfo(format, format_desc, NULL, NULL);
- printf(" Format: %s - %s\n", format, format_desc);
- printf(" Compression: %s\n", compression);
- printf(" Image Count: %d\n", image_count);
-
- for (int i = 0; i < image_count; i++)
- {
- int width, height, color_mode, data_type;
-
- error = imFileReadImageInfo(ifile, i, &width, &height, &color_mode, &data_type);
- if (error != IM_ERR_NONE)
- {
- PrintError(error);
- imFileClose(ifile);
- return;
- }
-
- printf(" Image #%d\n", i);
- printf(" Width: %d\n", width);
- printf(" Height: %d\n", height);
- printf(" Color Space: %s\n", imColorModeSpaceName(color_mode));
- printf(" Has Alpha: %s\n", imColorModeHasAlpha(color_mode)? "Yes": "No");
- printf(" Is Packed: %s\n", imColorModeIsPacked(color_mode)? "Yes": "No");
- printf(" Is Top Down: %s\n", imColorModeIsTopDown(color_mode)? "Yes": "No");
- printf(" Data Type: %s\n", imDataTypeName(data_type));
-
- double image_size = imImageDataSize(width, height, color_mode, data_type);
- printf(" Data Size: %.2f %s\n", image_size, GetSizeDesc(&image_size));
-
- char* attrib_list[50]; // should be dynamic allocated
- int attrib_list_count;
- imFileGetAttributeList(ifile, attrib_list, &attrib_list_count);
-
- for (int a = 0; a < attrib_list_count; a++)
- {
- if (a == 0)
- printf(" Attributes:\n");
-
- int attrib_data_type, attrib_count;
- const void* attrib_data = imFileGetAttribute(ifile, attrib_list[a], &attrib_data_type, &attrib_count);
-
- if (attrib_count == 1)
- printf(" %s: %s\n", attrib_list[a], AttribData2Str(attrib_data, attrib_data_type));
- else if (attrib_data_type == IM_BYTE && FindZero((imbyte*)attrib_data, attrib_count))
- printf(" %s: %s\n", attrib_list[a], attrib_data);
- else
- printf(" %s: %s %s ...\n", attrib_list[a], AttribData2Str(attrib_data, attrib_data_type), AttribData2Str((imbyte*)attrib_data + imDataTypeSize(attrib_data_type), attrib_data_type));
- }
- }
-
- imFileClose(ifile);
-}
-
-#include <windows.h>
-
-int main(int argc, char* argv[])
-{
- if (argc < 2)
- {
- printf("Invalid number of arguments.\n");
- return 0;
- }
-
- PrintImageInfo(argv[1]);
-
- return 1;
-}