用IronPython进行抓取,用C加载图像#

2024-09-27 22:14:36 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我编写了我的scraper,并将一个C类(card)传递到IronPython中,然后它很高兴地将我认为是二进制图像的数据加载到一个byte[]中,如下所示:

imageurl = "http://blabla.com/Image.ashx?id=" + card.Id + "&type=card"
imageresult = urllib2.urlopen(imageurl).read()
if imageresult == '':
    print 'Could not find image for ' + card.Title
card.AddImage(imageresult) # AddImage(byte[])

然后,我坚持这一点,用NHibernate从数据库中提取它,并试图在我的MVC前端上用这个把它拉回来:

^{pr2}$

如果我刚刚用Python把它写到一个文件而不是一个C对象中,我很肯定这是可行的。我的问题是,有没有一个好的方法来判断IronPython和CLR数据类型之间的转换会是什么样子?我的二进制文件糟透了,我只是不知道该怎么办,在这种情况下。在


Tags: 文件数据图像imagecomhttp二进制byte
2条回答

似乎byte[]无法持久化。看看这个问题:

NHibernate MappingException: no persister for byte[]

可能是因为在IronPython中而不是在C#中发生,所以没有得到相同的消息,这是由于C的类型检查。在

下面是另一个链接,通过将byte[]序列化为ASCII,一个可能的解决方案:

http://guildsocial.web703.discountasp.net/dasblogce/2009/04/03/NHibernateMappingToBinaryData.aspx

下面是那篇文章的一个片段:

return new ASCIIEncoding().GetString(bytes);

public static string ConvertByteArrayToString(byte[] bytes)
{
    try
    {
        return new ASCIIEncoding().GetString(bytes);
    }
    catch (Exception)
    {
        return "";
    }

}

纽曼医生基本上一针见血。问题是它最终由iron python产生的字符串格式。我没有在python中将其转换为正确的格式,然后用C#将其返回,我只是选择将这一部分交给C#。我最后做的是从iron python调用AddImage并传递url。然后用C来完成最后一步的抓取(图像)

相关问题 更多 >

    热门问题