maysam_p82 Ответов: 1

Как я могу конвертировать json непосредственно в изображение?


как я могу конвертировать Json непосредственно в изображение?
Я попытался преобразовать json в изображение напрямую, но не смог. как я могу это сделать?

Что я уже пробовал:

Вот структура json:
{"objects":[{"type":"text","originX":"left","originY":"top","left":15.87,"top":10.24,"width":491.24,"height":56.5,"fill":"#ffffff","stroke":null,"strokeWidth":1,"strokeDashArray":null,"strokeLineCap":"butt","strokeLineJoin":"miter","strokeMiterLimit":10,"scaleX":0.4,"scaleY":0.4,"angle":0,"flipX":false,"flipY":false,"opacity":1,"shadow":null,"visible":true,"clipTo":null,"backgroundColor":"","fillRule":"nonzero","globalCompositeOperation":"source-over","transformMatrix":null,"skewX":0,"skewY":0,"text":"آغاز بارندگي = خطر لغزندگي","fontSize":"50","fontWeight":"","fontFamily":"B Titr","fontStyle":"normal","lineHeight":1,"underline":false,"overline":false,"linethrough":false,"textAlign":"left","textBackgroundColor":"","charSpacing":0,"styles":{}}],"background":"#000"}

И это код для преобразования:
Bitmap bm = new Bitmap(384, 80);
                       //bm = new <pre>if (!mapNRPRMTORenderJsonFileToImage.ReqListInfo(dt_VMS))
           {
               return false;
           }
           int i = 0;
           App_Code.ImageConverter imgConverter = new App_Code.ImageConverter();

           foreach (DataRow dr_VMS in dt_VMS.Rows)
           {
               try
               {
                   var rootObject = Newtonsoft.Json.JsonConvert.DeserializeObject<App_Code.Rootobject>(dr_VMS["JasonForImageFile"].ToString());
                   if (rootObject.objects[0].type == "text")
                   {
                       //Bitmap image = new Bitmap(rootObject.objects[0].,int.Parse(dr_VMS["MapWidth_1"].ToString()), int.Parse(dr_VMS["MapHeight_1"].ToString()));
                       // = ;
                       //  image.Save(@"D:\Images\" + "image_" + i + ".png");
                       Bitmap bm = new Bitmap(384, 80);
                       //bm = new System.Web.Script.Serialization.JavaScriptSerializer().Deserialize<Bitmap>(dr_VMS["JasonForImageFile"].ToString());
                       string image = dr_VMS["JasonForImageFile"].ToString();

                       byte[] byteBuffer = Convert.FromBase64String(image);
                       MemoryStream memoryStream = new MemoryStream(byteBuffer);
                       memoryStream.Position = 0;

                       bm = (Bitmap)Bitmap.FromStream(memoryStream);
                       // Bitmap bmpImage = GetImageBitmapFromUrl1(firstitem["img_url"]);
                   }
               }
               catch
               { }
           }
           return true;

Kornfeld Eliyahu Peter

Как именно этот JSON представляет изображение? Это команды рисования и настройки?
Что значит быть "непосредственно"? Вы нашли косвенный способ сделать это?

1 Ответов

Рейтинг:
0

Andy Lanng

(Вам нужно ответить на комментарии, иначе комментатор не увидит предупреждение)
Изображения представляются несколькими способами при загрузке, обычно в виде большого куска шестнадцатеричного кода (0-9A-F). Эта строка может быть разобрана на байты, а затем на изображение. Это буквальное представление 1 и 0, которые составляют изображение.

У вас, Json, ничего подобного нет. Нет никакого образа.
То, что у вас есть, - это, самое большее, состояние холста. Нет даже никаких подробностей о том, что содержит холст, кроме того, какого цвета / толщины будут линии.

Если вы пытаетесь скопировать html-холст, то вы можете загрузить его в виде изображения. Тебе просто нужно быть немного умнее.

Один из способов-это:

var canvas = document.getElementById("theCanvas");
var img    = canvas.toDataURL("image/png");


Это будет кодировать изображение холста в виде строки url base64. Вы можете превратить это в реальное изображение в c#.

Вот еще некоторые подробности:
как сохранить изображение холста на сервере[^]


maysam_p82

Спасибо за ваш ответ. Но здесь мое приложение-это служба windows . Нет никакого asp.net веб-страница. Также json содержит изображение на черном фоне с текстом для дорожных знаков. Я уже мог получить изображение из json, но шрифт слишком большой, и текст не бледнел в середине фона.

Andy Lanng

Ах, тогда мой ответ не поможет, но и я тоже не могу :S

Желаю удачи ^_^