首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将SignaturePad位图转换为EPS的问题

将SignaturePad位图转换为EPS的问题
EN

Stack Overflow用户
提问于 2014-12-03 17:28:14
回答 1查看 877关注 0票数 2

我正在尝试将Xamarin SignaturePad组件为Android生成的位图转换为EPS。它需要是一个EPS,这样我就可以将它附加到一个LaTeX文档(LaTeX只处理我所知道的EPS )。

我使用的代码如下:

代码语言:javascript
复制
        Bitmap bitmap;
        try
        {
            bitmap = SignaturePadView.GetImage();
        }
        catch (Exception e)
        {
            MvxTrace.Trace(e.StackTrace);
            Finish();
            return;
        }
        string encodedImage;
        using (var stream = new MemoryStream())
        {
            bitmap.Compress(Bitmap.CompressFormat.Png, 100, stream);
            var bitmapData = stream.ToArray();
            encodedImage = Convert.ToBase64String(bitmapData, Base64FormattingOptions.None);
        }

然后,我将该字符串发送到服务器后端,服务器后端将其解码为PNG。当我这样做的时候,我得到了一个看起来是正确的结果,你可以在这里看到:

如果我尝试使用ImageMagick将其转换为如下所示的EPS:

代码语言:javascript
复制
convert myimage.png myimage.eps

我得到了一个只有一个黑匣子的图像。为了确认这种行为,我尝试将我的PNG转换为JPEG,如下所示:

代码语言:javascript
复制
convert myimage.png myimage.jpg

我得到的黑匣子和你看到的一样:

如果我打开我的解码png在Photoshop和做一个“另存为JPEG”或“另存为EPS”,我得到了我想要的。

我现在的问题是..。我做错什么了?我尝试了上面相同的代码片段,但将CompressFormat更改为JPEG,并得到了相同的黑匣子结果。有过这样的图像转换经验的人能帮上忙吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-03 20:30:31

根据芝士巴伦的反馈,我能够找到我的问题。有两种方法可以解决这个问题:

1.)变化

代码语言:javascript
复制
bitmap = SignaturePadView.GetImage();

代码语言:javascript
复制
bitmap = SignaturePadView.GetImage(Color.Black, Color.White);

然后将填充颜色更改为白色,从而在从签名视图中取回位图时移除透明的背景。

2.)使用alpha标记与您的ImageMagick转换命令一起删除透明度:

代码语言:javascript
复制
convert -alpha background myimage.png test.jpg
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27277940

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档