Как экспортировать FusionChart в изображение в ASP.Net - PullRequest
1 голос
/ 15 февраля 2011

Мы используем бесплатную версию fusion-диаграмм и хотим знать, есть ли способ экспортировать сгенерированную диаграмму в изображение без использования сторонних компонентов. Мы используем ASP.Net для создания диаграмм.

Ответы [ 3 ]

2 голосов
/ 22 марта 2011

РЕШЕНИЕ

После исследования этой темы я нашел для этого полезное решение.

Для этого нам нужна бесплатная программа от Bytecout для конвертации SWF в изображение. Это можно скачать по этой ссылке .

Затем нам нужно зарегистрировать COM-библиотеки и добавить ссылку на наш проект. См. Ниже для дальнейшего использования

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' играет очень важную роль, она определяет график слияния, который должен быть загружен без анимации. Также целесообразно, если мы спим код в течение 1 или 2 секунд, SWF будет загружен полностью, и изображение будет преобразовано в выбранный формат.

Надеюсь, это будет полезно для таких, как я. : -)

0 голосов
/ 03 июня 2011

FusionCharts Team разработала сборку .NET, которая позволит вам экспортировать диаграмму на сервер без загрузки диаграммы в браузер.

Вы можете получить ее, написав в службу поддержки FusionCharts по адресу http://www.fusioncharts.com/contact/.

Это работает только для диаграмм FusionCharts v3.

0 голосов
/ 15 февраля 2011
  1. Снимок экрана.
  2. Лицензия.

Конечно, есть и бесплатные средства управления графиками Asp.net ( здесь ). Вот пример того, как экспортировать с помощью этих инструментов.

...