找回密码
 立即注册

QQ登录

只需一步,快速开始

[已处理] 图片加白底

kopnature
中级会员   /  发表于:2017-1-17 09:38:54
11#
没看出来这三张图有什么关系
回复 使用道具 举报
kopnature
中级会员   /  发表于:2017-1-17 09:54:55
12#
麻烦用这两个图片试一下,cannon.jpg显示在白底图片的正中央的位置

本帖子中包含更多资源

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

x
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-1-17 10:05:03
13#
kopnature 发表于 2017-1-17 09:38
没看出来这三张图有什么关系

抱歉,发错了应该是这个

本帖子中包含更多资源

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

x
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-1-17 11:00:54
14#
kopnature 发表于 2017-1-17 09:54
麻烦用这两个图片试一下,cannon.jpg显示在白底图片的正中央的位置

测试了一下确实是有问题,白色背景图片的问题,具体的兼容性问题原因还不明确,请问你这张图片是怎么生成的?
换了一张windows画图工具生成的白色图片就可以,或者用代码生成的白色jpeg 图片也是可以的。附上图片生成代码

            RasterImage ri = iv.Image;
            Bitmap b1 = new Bitmap(ri.Width+20, ri.Height+20);     //新建位图b1
            Graphics g1 = Graphics.FromImage(b1);  //创建b1的Graphics
            g1.FillRectangle(Brushes.White, new Rectangle(0, 0, ri.Width + 20, ri.Height + 20));
            MemoryStream st=new MemoryStream();
            b1.Save(st, ImageFormat.Jpeg);
            b1.Dispose();
            RasterImage destImage = RasterImageConverter.ConvertFromImage(Image.FromStream(st), ConvertFromImageOptions.None);
回复 使用道具 举报
kopnature
中级会员   /  发表于:2017-1-17 11:04:42
15#
白色图片是通过以下代码生成的
FillCommand command = new FillCommand();
         command.Color = new RasterColor(255, 255, 255);

         command.Progress += new EventHandler<RasterCommandProgressEventArgs>(Command_Progress);
         ProgressBar.Visible = true;
         // Run the FillCommand on the loaded image.
         command.Run(ActiveViewerForm.Viewer.Image);

回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-1-17 11:43:36
16#
经测试,保存图片时保存为24或者16位的是没有问题的,8位会出现问题,建议你可以保存为前面两个
回复 使用道具 举报
kopnature
中级会员   /  发表于:2017-1-17 13:07:36
17#
哦,原来如此。
回复 使用道具 举报
kopnature
中级会员   /  发表于:2017-1-17 13:30:18
18#
现在用24位的白底已经不报错了,但是执行如下代码后,保存后的图片只是一个白底,子图片(cannon.jpg)没加进去,帮忙看下下面代码问题出在哪?
RasterImage parentImage = codecs.Load(Path.Combine(Application.StartupPath, @"..\..\Pic\SizeCommand1.bmp"));
            RasterImage childImage = codecs.Load(Path.Combine(Application.StartupPath, @"..\..\Pic\cannon.jpg"));
            // Combine them
            CombineWarpCommand command = new CombineWarpCommand();
            
            LeadPoint[] destPoints =
               {
                  new LeadPoint(10,10),
                  new LeadPoint(childImage.Width-10,10),
                  new LeadPoint(childImage.Width-10,childImage.Width-10),
                  new LeadPoint(10,childImage.Width-10)
               };

            

            command.DestinationImage = parentImage;
            command.SetDestinationPoints(destPoints);
            command.SourceRectangle = new LeadRect(0, 0, childImage.Width, childImage.Height);
            command.Flags = CombineWarpCommandFlags.Bilinear;

            // Save it to disk
            codecs.Save(parentImage, Path.Combine(Application.StartupPath, @"..\..\Pic\CombineWarpCommand.bmp"), RasterImageFormat.Bmp, 24);
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-1-17 14:20:16
19#
https://www.leadtools.com/help/l ... inefastcommand.html

使用CombineFastCommand,保存时保存childImage
回复 使用道具 举报
kopnature
中级会员   /  发表于:2017-1-17 14:32:34
20#
执行到这里“ command.Run(srcImage);” 报错 “Invalid parameter passed” ,附件为程序和图片。

本帖子中包含更多资源

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

x
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部