我正在使用Visual Studio 2008(C#)中的Crystal Reports对象。报告构建良好,数据正确绑定。但是,当我尝试从源中调整IBlobFieldObject的大小时,缩放比例出现了偏差。

关于这种情况的两个说明。源图像为1024x768,我的最大宽度和高度为720x576。我的数学应该是正确的,我的新图像尺寸将为720x540(以适合最大宽度和高度准则)。当我这样做时,该比率是错误的:

img = Image.FromFile(path);
newWidth = img.Size.Width;
newHeight = img.Size.Height;

if ((img.Size.Width > 720) || (img.Size.Height > 576))
{
   double ratio = Convert.ToDouble(img.Size.Width) / Convert.ToDouble(img.Size.Height);
   if (ratio > 1.25)    // Adjust width to 720, height will fall within range
   {
      newWidth = 720;
      newHeight = Convert.ToInt32(Convert.ToDouble(img.Size.Height) * 720.0 / Convert.ToDouble(img.Size.Width));
   }
   else                 // Adjust height to 576, width will fall within range
   {
      newHeight = 576;
      newWidth = Convert.ToInt32(Convert.ToDouble(img.Size.Width) * 576.0 / Convert.ToDouble(img.Size.Height));
   }

   imgRpt.Section3.ReportObjects["image"].Height = newHeight;
   imgRpt.Section3.ReportObjects["image"].Width = newWidth;
}


我已经逐步检查了代码,以确保数学中的值正确,并且甚至保存了图像文件以确保宽高比正确(正确)。无论我如何尝试,图像都将被压缩-几乎就像在Crystal Reports设计器中关闭了“缩放”值一样(不是)。在此先感谢您的帮助!

最佳答案

Crystal Reports处理IBlobFieldObjects的方式存在几个问题。我遇到的第一个问题是,对于Crystal Reports的ReportObjects的Height和Width属性,内联文档不正确。它说这些值用缇表示,不是。例如:

ImageReport imgRpt = new ImageReport();
// The following value should be in PIXELS... NOT twips as the docs suggest!
imgRpt.Section3.ReportObjects["image"].Height = 300;


第二个问题与我正在执行的imageToByteArray转换有关。这是我使用的方法:

    public byte[] imageToByteArray(System.Drawing.Image imageIn)
    {
        MemoryStream ms = new MemoryStream();
        // The following line was ImageFormat.Jpeg, but it caused sizing issues
        // in Crystal Reports.  Changing to ImageFormat.Bmp made the squashed
        // problems go away.
        imageIn.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp);
        return ms.ToArray();
    }


总而言之,Crystal Reports似乎更喜欢ImageFormat.Bmp来填充IBlobFieldObjects。现在,如果有人可以告诉我如何解决使用ImageFormat.Bmp的可怕位深度(这很可能是Crystal Reports Report对象处理图像数据的方式,并且可能无法修复),那么我已经准备就绪。

关于c# - Crystal Reports程序化图像调整大小...可以缩放吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2789607/

10-15 10:28