Resolution information

On 02/01/2014 at 13:07, xxxxxxxx wrote:

User Information:
Cinema 4D Version:   R15 
Platform:   Windows  ;   
Language(s) :     C++  ;

---------
When I load a texture direct in a material channel, c4d show the resolution info.
How can I get this information?

And what if I have textures in a layer shader.
How to get the resolution for all images in the layer shader?

On 02/01/2014 at 13:15, xxxxxxxx wrote:

I found an old post from Matthias.
Is this the way to go?

_<_t_>_Direct Link To This Post Posted: 30 Jun 2008 at 5:56pm

Unfortunatly the resolution or the link to the bitmap is not stored in a container. You have to check the bitmap manually, going by the path provided.

cheers,
Matthias
<_<_t_>_

On 02/01/2014 at 17:28, xxxxxxxx wrote:

I think he meant that you have to get the information from the image file manually.
Like this:

    Filename fn = GeGetC4DPath(C4D_PATH_DESKTOP) + "myimage.jpg";  
  
  AutoAlloc<BaseBitmap> bmp;  
  if (IMAGERESULT_OK != bmp->Init(fn)) return FALSE;  
  
  LONG bw = bmp->GetBw();      //The image width  
  LONG bh = bmp->GetBh();      //The image height  
  GePrint(LongToString(bw));  
  GePrint(LongToString(bh));  
  
  
  MultipassBitmap *mbmp = NULL;  
  mbmp = MultipassBitmap::Alloc(bw, bh, COLORMODE_RGBf);  
  if (!mbmp) return FALSE;  
  
  GeData d = mbmp->GetParameter(MPBTYPE_DPI);  //Gets the dpi info  
  LONG dpi = d.GetLong();  
  GePrint(LongToString(dpi));  
  
  MultipassBitmap::Free(mbmp);

-ScottA

On 03/01/2014 at 03:45, xxxxxxxx wrote:

Yes, that is what I thought.
I use GetColorMode.

	orgImage->Init(fname, -1, nullptr);
	Int32 colorMode = orgImage->GetColorMode();	//The image colormode
	Int32 bw = orgImage->GetBw();				//The image width
    Int32 bh = orgImage->GetBh();				//The image height

Here also a translation from the Int32 colormode to a String with the colormode description
Perhaps someone might find it useful (it saves typing in).

String modeToString(Int32 colorMode)
{
	switch (colorMode)
	{
		case COLORMODE_ILLEGAL:
			return "Illegal";
		case COLORMODE_ALPHA:
			return "Only 8-bit alpha channel.";
		case COLORMODE_GRAY:
			return "8-bit grayscale channel.";
		case COLORMODE_AGRAY:
			return "8-bit grayscale channel with 8-bit alpha.";
		case COLORMODE_RGB:
			return "8-bit RGB channels.";
		case COLORMODE_ARGB:
			return "8-bit RGB channels with 8-bit alpha.";
		case COLORMODE_CMYK:
			return "8-bit CMYK channel.";
		case COLORMODE_ACMYK:
			return "8-bit CMYK channel with 8-bit alpha.";
		case COLORMODE_MASK:
			return "8-bit grayscale map as mask.";
		case COLORMODE_AMASK:
			return "8-bit grayscale map as mask with 8-bit alpha.";
		case COLORMODE_ILLEGALw:
			return "Illegal.";
		case COLORMODE_GRAYw:
			return "16-bit grayscale channel.";
		case COLORMODE_AGRAYw:
			return "16-bit grayscale channel with 16-bit alpha.";
		case COLORMODE_RGBw:
			return "16-bit RGB channels.";
		case COLORMODE_ARGBw:
			return "16-bit RGB channels with 16-bit alpha.";
		case COLORMODE_MASKw:
			return "16-bit grayscale map as mask.";
		case COLORMODE_ILLEGALf:
			return "Illegal.";
		case COLORMODE_GRAYf:
			return "Floating point grayscale channel.";
		case COLORMODE_AGRAYf:
			return "Floating point grayscale channel with floating point alpha.";
		case COLORMODE_RGBf:
			return "Floating point RGB channels.";
		case COLORMODE_ARGBf:
			return "Floating point RGB channels with floating point alpha.";
		case COLORMODE_MASKf:
			return "Floating point grayscale map as mask.";
  
		default:
			return "Unknown Colormode: " + String::IntToString(colorMode);
	}
}// end String modeToString(Int32 colorMode)