我正在尝试将Xamarin SignaturePad组件为Android生成的位图转换为EPS。它需要是一个EPS,这样我就可以将它附加到一个LaTeX文档(LaTeX只处理我所知道的EPS )。
我使用的代码如下:
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:
convert myimage.png myimage.eps我得到了一个只有一个黑匣子的图像。为了确认这种行为,我尝试将我的PNG转换为JPEG,如下所示:
convert myimage.png myimage.jpg我得到的黑匣子和你看到的一样:

如果我打开我的解码png在Photoshop和做一个“另存为JPEG”或“另存为EPS”,我得到了我想要的。
我现在的问题是..。我做错什么了?我尝试了上面相同的代码片段,但将CompressFormat更改为JPEG,并得到了相同的黑匣子结果。有过这样的图像转换经验的人能帮上忙吗?
发布于 2014-12-03 20:30:31
根据芝士巴伦的反馈,我能够找到我的问题。有两种方法可以解决这个问题:
1.)变化
bitmap = SignaturePadView.GetImage();至
bitmap = SignaturePadView.GetImage(Color.Black, Color.White);然后将填充颜色更改为白色,从而在从签名视图中取回位图时移除透明的背景。
2.)使用alpha标记与您的ImageMagick转换命令一起删除透明度:
convert -alpha background myimage.png test.jpghttps://stackoverflow.com/questions/27277940
复制相似问题