Ние използваме безплатната версия на fusion диаграми и искаме да знаем има ли начин да експортираме генерираната диаграма в изображение, без да използваме компоненти на трети страни. Ние използваме ASP.Net за генериране на графиките.
Как да експортирате FusionChart в изображение в ASP.Net
Отговори (3)
РЕШЕНИЕ
След проучване по тази тема намерих полезно решение за това.
За целта трябва да имаме безплатен софтуер от Bytecout за конвертиране на swf в изображение. Това може да бъде изтеглено от тази връзка.
След това трябва да регистрираме COM dll и да добавим препратката към нашия проект. Вижте по-долу за по-нататъшна употреба
Protected Sub btnSwf2ImgConverter_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim swfobj As New SWFToImage.SWFToImageObject
swfobj.InitLibrary("demo", "demo")
swfobj.InputSWFFileName = Server.MapPath("dumps/swf/") & "FCF_MSColumn3D.swf"
If ddlImageExtension.SelectedValue = "jpg" Then
swfobj.ImageOutputType = TImageOutputType.iotJPG
ext = ".jpg"
Else
If ddlImageExtension.SelectedValue = "gif" Then
swfobj.ImageOutputType = TImageOutputType.iotGIF
ext = ".gif"
Else
If ddlImageExtension.SelectedValue = "png" Then
swfobj.ImageOutputType = TImageOutputType.iotPNG
ext = ".png"
Else
If ddlImageExtension.SelectedValue = "bmp" Then
swfobj.ImageOutputType = TImageOutputType.iotBMP
ext = ".bmp"
End If
End If
End If
End If
filenm = "FCF_Column3D" & ext
swfobj.Execute_Begin()
'swfobj.Execute()
swfobj.Execute_SetVariable("dataXML", "<graph animation='0' formatNumber='1' divLineColor='ff5904' divLineAlpha='20' alternateHGridAlpha='5' canvasBorderColor='666666' baseFontColor='666666' showAlternateHGridColor='1' AlternateHGridColor='ff5904' anchorSides='3' rotateNames='1' caption='Daily Reports' yAxisMinValue='0' yAxisMaxValue='1' xAxisName='Day-Month-Year' yAxisName='Percentage' decimalPrecision='2' numdivlines='8' numVdivlines='16' showhovercap='1' formatNumberScale='0'> <categories> <category name='1-Jun-2010' showName='1' /> <category name='2-Jun-2010' showName='1' /> <category name='3-Jun-2010' showName='1' /> <category name='4-Jun-2010' showName='1' /> <category name='5-Jun-2010' showName='1' /> <category name='6-Jun-2010' showName='1' /> <category name='7-Jun-2010' showName='1' /> <category name='8-Jun-2010' showName='1' /> <category name='9-Jun-2010' showName='1' /> <category name='10-Jun-2010' showName='1' /> <category name='11-Jun-2010' showName='1' /> <category name='12-Jun-2010' showName='1' /> <category name='13-Jun-2010' showName='1' /> <category name='14-Jun-2010' showName='1' /> <category name='15-Jun-2010' showName='1' /> <category name='Aggregate' showName='1' /></categories><dataset showValues='0' alpha='80' showAnchors='1' seriesname='Answered Percent' color='#f07979' lineThickness='2'><set name='Month' value='97.6'/><set name='Month' value='98.2'/><set name='Month' value='99.3'/><set name='Month' value='99.6'/><set name='Month' value='95.2'/><set name='Month' value='99.3'/><set name='Month' value='99.3'/><set name='Month' value='98.8'/><set name='Month' value='97.5'/><set name='Month' value='96.3'/><set name='Month' value='98.6'/><set name='Month' value='99.1'/><set name='Month' value='99.3'/><set name='Month' value='99.6'/><set name='Month' value='99.2'/><set name='Month' value='98.38'/></dataset></graph>")
swfobj.Execute_SetVariable("chartWidth", "750")
swfobj.Execute_SetVariable("chartHeight", "600")
swfobj.ImageWidth = 600
swfobj.ImageHeight = 500
Threading.Thread.Sleep(10000)
swfobj.Execute_GetImage()
swfobj.SaveToFile(Server.MapPath("dumps/images/" & filenm))
swfobj.Execute_End()
Call DownloadImage(filenm)
End Sub
Public Sub DownloadImage(ByVal fn As String)
Image1.ImageUrl = "~/dumps/images/" & fn
Dim fi As New FileInfo(Server.MapPath("dumps/images/" & fn))
HttpContext.Current.Response.Clear()
HttpContext.Current.Response.AddHeader("content-disposition", String.Format("attachment; filename={0}", fn))
HttpContext.Current.Response.ContentType = "image/" & DropDownList1.SelectedValue
Response.WriteFile(fi.FullName)
Response.Flush()
fi.Delete()
Response.End()
End Sub
Тук animation='0' играе много важна роля, тя указва swf на fusion диаграмата, че трябва да се зареди без анимация. Също така е препоръчително, ако заспим кода за 1 или 2 секунди, swf ще се зареди напълно и изображението ще се преобразува в избрания формат.
Надявам се това да е полезно за някой като мен. :-)
- Заснемане на екрана.
- Лицензирайте го.
Разбира се, има и безплатните контроли за диаграми на Asp.net (тук). Тук е пример за това как да експортирате с тези инструменти.
Екипът на FusionCharts разработи .NET сборка, която ще ви позволи да експортирате диаграма на сървър, без да зареждате диаграмата в браузъра.
Можете да го получите, като пишете на поддръжката на FusionCharts на http://www.fusioncharts.com/contact/ .
Това работи само за диаграми на FusionCharts v3.