Note that there are some explanatory texts on larger screens.

plurals
  1. POIncreasing Print Quality for images
    text
    copied!<p>I'm writing a program that needs to print off high resolution .tiff images. The problem I'm having is that I can't print the .tiff's in good quality. Due to the large size of the .tiff (8700x7200 for instance) It will not fit on any standard sized sheet. I tried increasing the DPI but that didn't seem to have any effect. The only way i can get the .tiff to fit the page is to scale it down. but then the image has horrendous quality. (I scale it down to fit on a 11x17, but that only has an indicated resolution of 1100x1700). i tried changing the resolutions ettings on the printer, tried manually and programatically setting the printer quality/resolution but to no success. Basically I want to be able to fit more pixels of the .tiff onto the 11x17 page so I don't have to scale as much. I thought increasing the print dpi would increase the amount of pixels on an 11x17 inches, but it had no effect I could see. Maybe I'm doing something wrong. Any help would be greatly appreciated. thanks.</p> <p>The code below is what I'm attempting to do right now when pd.Print() is invoked.</p> <pre><code> private void pd_PrintPage(object sender, PrintPageEventArgs ev) { //float x = ev.MarginBounds.Left; //float y = ev.MarginBounds.Top; try { //ResizeImage(@"H:\21RR-G0K-30140-0220-0002.tiff", @"H:\21RR-G0K-30140-0220-0002-new.tiff", 500, 900, false); Image tempImage = Image.FromFile(@"H:\21RR-G0K-30140-0220-0002.tiff"); Bitmap bMap = new Bitmap(tempImage); bMap.SetResolution(1200, 1200); string l = ""; tempImage = bMap; /*if (tempImage.Width &gt; tempImage.Height) //if poster is longer then it is tall, rotate the image. Done to match standard printing aspect ratios { Bitmap tempBitmap = new Bitmap(tempImage); //Need to convert to Bitmap type to do rotation RotateBicubic rotationFilter = new RotateBicubic(90, true); tempImage = rotationFilter.Apply(tempBitmap); }*/ float ImageAspectRatio = (float)tempImage.Height / (float)tempImage.Width; float PageSizeAspectRatio = (float)_pSize.Height / (float)_pSize.Width; //_pSize is the selected printing sheet size if (ImageAspectRatio &lt; 1 &amp;&amp; PageSizeAspectRatio &gt; 1) //Need to rotate Image. Can't attempt to rotate tempImage due to size. Scale then rotate. { double x_scale = (double)_pSize.Width / (double)tempImage.Height; double y_scale = (double)_pSize.Height / (double)tempImage.Width; int percent = 0; if (y_scale &lt; x_scale) { percent = Convert.ToInt32(y_scale * 100); } else { percent = Convert.ToInt32(x_scale * 100); } Image myImage = ImageManipulation.ScaleByPercent(tempImage, percent); //I know this line is the problem, but I can't fit the image on the page without massive scaling due to the page reolution restraints Bitmap tempMap = new Bitmap(myImage); tempMap.SetResolution(1200, 1200); RotateBicubic rotateBC = new RotateBicubic(90); Image finalImage = rotateBC.Apply(tempMap); //rotate the image 90 degrees using bicubic interpolation. This isn't what's killing the quality as the quality is no better with this disabled ev.Graphics.DrawImage(finalImage, 0, 0); } else if (ImageAspectRatio &gt;= 1 &amp;&amp; PageSizeAspectRatio &gt;= 1) //No Need for rotation { double x_scale = (double)_pSize.Width / (double)tempImage.Width; double y_scale = (double)_pSize.Height / (double)tempImage.Height; int percent = 0; if (y_scale &lt; x_scale) { percent = Convert.ToInt32(y_scale * 100); } else { percent = Convert.ToInt32(x_scale * 100); } Image myImage = ImageManipulation.ScaleByPercent(tempImage, percent); ev.Graphics.DrawImage(myImage, 0, 0); } else { } } catch(Exception ex) { string breakingpoint = ""; } } </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload