Page 1 of 1

Resolution units

Posted: 2014-07-29T08:13:58-07:00
by albertisi
I have an image that i save with resolution and resolution unit like this:

Code: Select all

someImage.density(Geometry(resolution, resolution));
someImage.resolutionUnits(MagickCore::ResolutionType::PixelsPerCentimeterResolution);
someImage.write(imagePath);
Once i read the same image right after, my resolution units are set to unknown (0), why is that? I think that is the bug in magick++.
Read code:

Code: Select all

Image someImage2;
someImage2.read(imagePath);			
int resUnit2 = someImage2.resolutionUnits();
I am saving an image in PNG format. Please let me know if you need more information.

Re: Resolution units

Posted: 2014-07-29T09:51:23-07:00
by dlemstra
What is your OS and version of ImageMagick?

Re: Resolution units

Posted: 2014-08-08T12:55:29-07:00
by albertisi
My OS is Win 7. ImageMagick Version 6.8.9

Re: Resolution units

Posted: 2014-08-08T14:19:13-07:00
by dlemstra
What is the format of the image you are reading and writing?

Re: Resolution units

Posted: 2014-08-11T05:02:47-07:00
by albertisi
I am reading and writing PNG format image.

-Albert

Re: Resolution units

Posted: 2014-08-29T06:27:45-07:00
by albertisi
Anyone had this problem besides me?

Re: Resolution units

Posted: 2014-08-29T09:42:06-07:00
by fmw42
If the input image has no resolution, it will have unknown units. So you must specify both -density and -units.

see
http://www.imagemagick.org/script/comma ... hp#density
http://www.imagemagick.org/script/comma ... .php#units

PNG only supports pixelspercentimeter, but if you specify pixelsperinch, IM will convert that for you appropriately.

Re: Resolution units

Posted: 2014-09-19T10:45:35-07:00
by albertisi
@fmw42 i am setting density, and units, as in my original post.

I debugged image magic, and the problem is during the retrieval of resolutionUnits from the image.
After i read the image, i call to return resolution units In Image.cpp this code gets executed

Code: Select all

Magick::ResolutionType Magick::Image::resolutionUnits(void) const
{
  return(constOptions()->resolutionUnits());
}
Unfortunately constOptions() are not set, or updated during the read, so it contains default values for all attributes.
This code should be updated to this:

Code: Select all

Magick::ResolutionType Magick::Image::resolutionUnits(void) const
{
  return(constImage()->units());
}
Image attributes contains all the attributes setup after the read, constOptions doesnt.

Not sure how to proceed further...

Re: Resolution units

Posted: 2014-09-19T11:06:01-07:00
by snibgo
alberisi wrote:This code should be updated to this: ...
Are you saying IM has a bug, and this is your suggested correction? If so, then post to the bugs forum viewforum.php?f=3