找回密码
 立即注册

QQ登录

只需一步,快速开始

wuzhiwei

注册会员

10

主题

28

帖子

196

积分

注册会员

积分
196

活字格认证

wuzhiwei
注册会员   /  发表于:2014-10-8 16:56  /   查看:7788  /  回复:7
c1PictureBox 4.0.20141.33356
this.c1PictureBox1.Image.Save(System.IO.Directory.GetCurrentDirectory()+"\\temp.jpg",System.Drawing.Imaging.ImageFormat.Jpeg);
执行以上命令时会出错。早期版本不会。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

7 个回复

倒序浏览
Alice
社区贡献组   /  发表于:2014-10-8 17:19:00
沙发
回复 1楼wuzhiwei的帖子

请问你所说的早期版本是什么版本?现在又用的什么版本。
另外你是说执行代码后会抛出图片的异常么?请问不运行这段代码,仅仅是编译程序会通过么?
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
wuzhiwei
注册会员   /  发表于:2014-10-9 09:49:00
板凳
c1PictureBox   现有版本: 4.0.20141.33356  旧版本:1.0.20061.135

c1PictureBox 是以二进制文件存在SQL数据库中,读取数据显示图片正常,但执行以上命令生成文件时出错。
相同的图片源,用升级前相同的程序(c1PictureBox 旧版本:1.0.20061.135)执行以上命令没有问题。
昨天上传错误图片错了,重传。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2014-10-9 10:16:00
地板
回复 3楼wuzhiwei的帖子

根据图片情况来看,需要跟踪一下代码。
推测,可能是路径不正确,或是对所要操作的图片没有权限。

你新建一个工程,拖一个微软的标准的PictureBox,做同样的操作,看是否也会有相同的异常。
若是存在,就跟踪代码,确认下是路径还是权限问题。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
wuzhiwei
注册会员   /  发表于:2014-10-9 11:53:00
5#
我可以判定应该不是路径和权限的问题。我用源代码跟踪就是执行以上命令时出错。我是管理员权限,也试着更改路径都会出一样的错误。用c1PictureBox 旧版本:1.0.20061.135,相同的源代码没有问题。
开发环境:net2013,你也可以测试一下:
System.Windows.Forms.OpenFileDialog of=new OpenFileDialog();
of.Filter="All Image Files (*.jpg)|*.jpg|*.gif|*.jpeg|All files (*.*)|*.*";
of.Title="Open";
if (of.ShowDialog()==System.Windows.Forms.DialogResult.OK)
{
  System.IO.FileStream fs = new System.IO.FileStream(of.FileName,System.IO.FileMode.Open,System.IO.FileAccess.Read);
  byte[] buffByte = new byte[fs.Length];
  fs.Read(buffByte,0,(int)fs.Length);
  fs.Close();
  fs = null;buffByte=null;
    this.c1PictureBox1.SizeMode=System.Windows.Forms.PictureBoxSizeMode.StretchImage;       
    System.Drawing.Bitmap vImage = new Bitmap(of.FileName);
    this.c1PictureBox1.Image=(Image)vImage ;
    this.c1TextBoxItemCode.Focus();
}
-执行以下语句出错
this.c1PictureBox1.Image.Save(@"d:\temp.jpg",System.Drawing.Imaging.ImageFormat.Jpeg);
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2014-10-9 12:28:00
6#
回复 5楼wuzhiwei的帖子

按照你的代码,并未重现该问题。
我的测试工程如下:



由于没有2013,所以用的是VS2010,Framework4.0, C1版本是2014 V2最新版。
测试步骤:
1.打开工程并运行。
2.点击按钮.
3.在打开的对话框里选择一张我本地的图片。
4.检查,这张图片已经完好的保存在路径下。

我的这个测试工程在你的机器上也有问题么?或是根据我的描述看看是否我对这个问题理解有偏差?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
wuzhiwei
注册会员   /  发表于:2014-10-10 10:08:00
7#
只运行以上代码没有问题,但如果从SQL数据库取图片数据绑定到c1PictureBox1,如以下代码:
                        this.c1PictureBox1.DataSource=this.itemVendorReport1.ItemVendorReporting;
                        this.c1PictureBox1.DataField ="reportImage";
执行this.c1PictureBox1.Image.Save(System.IO.Directory.GetCurrentDirectory()+"\\temp.jpg",System.Drawing.Imaging.ImageFormat.Jpeg); 就会出错。旧版本不会。

现在我改用以下方法处理,问题解决了。非常感谢!      

byte[] MyPicter = new byte[0];
                    MyPicter = (byte[])this.itemVendorReport1.ItemVendorReporting.Rows[0]["reportImage"];
                    int ArraySize = MyPicter.GetUpperBound(0);
                    FileStream fs = new FileStream(System.IO.Directory.GetCurrentDirectory() + "\\temp.jpg", FileMode.OpenOrCreate, FileAccess.Write);
                    fs.Write(MyPicter, 0, ArraySize);
                    fs.Close();
                    if (System.IO.File.Exists(System.IO.Directory.GetCurrentDirectory() + "\\temp.jpg"))
                    {
                        System.Diagnostics.Process.Start(System.IO.Directory.GetCurrentDirectory() + @"\temp.jpg");
                    }
                    else
                    {
                        MessageBox.Show("无测试报告!", "查无报告", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    }
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2014-10-10 11:03:00
8#
回复 7楼wuzhiwei的帖子

好的。如果有新问题欢迎发帖交流。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部