# Why is 13 the smaller height dimension of a Graphics?

It seems that you cannot get a Graphics image with a height dimension less than 13. Trying to draw something and then asking for the ImageDimensions of the resulting Graphics, you will get three different results, based on the size of the given height.

For example, try to modify the h value in the following code and see the resulting ImageDimensions output (try h=10, h=14, h=20):

w = 100;
h = 10;
g = Graphics[{Red, Line[{{0, 0}, {w, h}}]}, AspectRatio -> Full, ImageSize -> {w, h}]
ImageDimensions[g]


If you specify an ImageSize with a height >= 15 you will get an ImageDimensions output coherent with the specified size.

Instead, drawing something having an height < 15 produces two unexpected results : for h <= 11 the resulting height dimension is always 13, and for 11 < h < 15, we get some turbulence, see this plot of the resulting ImageDimension for h going from 1 to 32:

w = 100;
t = Table[{h,ImageDimensions[Graphics[{Line[{{0, 0}, {w, h}}]}, ImageSize -> {w, h}]][[2]]}, {h, 1, 32}];
TableForm[Transpose@t, TableHeadings -> {{"ImageSize height", "ImageDimensions height"}, None}]
ListLinePlot[t]


Situation doesn't change applying Options to Graphics. This is a little Manipulate to play around with the stated issue:

w = 100;
Manipulate[
myLine = Graphics[{Blue, Line[{{0, 0}, {w, h}}]}
, ImageSize -> {w, h}
, AspectRatio -> Full
, PlotRangeClipping -> plotRangeClipping
, ImageMargins -> imageMargins
];
h1 = ImageDimensions[myLine][[2]];
Column[{
Grid[{{"Height:", h}, {"Dimension:",
If[h1 == h, Style[h1, Green], Style[h1, Red]]}}],
myLine
}]
, {{h, 1}, 1, 32, 1}
, {plotRangeClipping, {False, True}}
, {{plotRangePadding, None}, 0, 20, 1}

The problem (bug?) is not with ImageDimensions itself, but with Graphics, that always add a unwanted surrounding space to its output when vertical size is less than 15. Here ImageDimensions is used just to give numeric evidence to the stated problem.
• The usage of ImageDimensions with a general graphic is actually not documented, however I get basically the same threshold issue with ImageDimensions@Image@myLine. What are you trying to do? You can get the graphic dimensions with PlotRange/.AbsoluteOptions[graphic] – george2079 Oct 19 '15 at 14:58
• I think the issue here relates to rasterization (It appears ImageDimensions is implicitly rasterizering to get your number ). You might want to pose the column issue as a new question. – george2079 Oct 20 '15 at 13:55
• @Guido, Based on your last comment, are you aware that ImageSize is not specified in inches? Per the docs you need to multiply image size by 72 to get inches. 13/72nds of an inch is pretty small for a plot. – N.J.Evans Oct 20 '15 at 15:07
• I traced this through various internal functions including SystemConvertersDumpiRasterize, SystemConvertersDumpToRasterDataPacket, SystemConvertersDumpConvertGraphicToRasterDataPacket, SystemConvertersDumpcreateExportPacketExpr, SystemConvertersDumpGetRasterData, and finally SystemConvertersDumpUtilitiesGetFromFE. I was unable to find the source of the minimum raster size despite a few promising dead-ends like SystemConvertersDumpPadRaster`. This appears to be a property of the Front End itself. – Mr.Wizard Feb 19 '17 at 11:00