Author: h.mohri
Output to JSON Base64 Image
Data Reading Browser.
I use Ext JS. And the JSON server
is C++Builder bcc32.
Table of Contents
Create a standalone new project for WebBroker.
Add action on TWebModule side.
PathInfo is set to "/img"
.
It is a code to output JSON
corresponding to CORS
.
Code that can be compiled with bcc32. For CORS
please refer to the following URL.
https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
<span class="synPreProc" style="color:#9355e6;">#include </span><span class="synConstant" style="color:#ff6666;"><memory></span> <span class="synPreProc" style="color:#9355e6;">#include </span><span class="synConstant" style="color:#ff6666;"><System.NetEncoding.hpp></span> <span class="synPreProc" style="color:#9355e6;">#include </span><span class="synConstant" style="color:#ff6666;"><System.Json.hpp></span> <span class="synType" style="color:#3ec63e;">void</span> __fastcall TWebModule_main::WebModule_mainWebActionItem1Action(TObject *Sender, TWebRequest *Request, TWebResponse *Response, <span class="synType" style="color:#3ec63e;">bool</span> &Handled) { <span class="synType" style="color:#3ec63e;">const</span> String filename = <span class="synConstant" style="color:#ff6666;">"90020_Ballistoides_conspicillum.jpeg"</span>; std::tr1::shared_ptr<TMemoryStream> m1(<span class="synStatement" style="color:#d88a17;">new</span> TMemoryStream()); std::tr1::shared_ptr<TJSONArray> ja(<span class="synStatement" style="color:#d88a17;">new</span> TJSONArray()); <span class="synStatement" style="color:#d88a17;">try</span> { m1->LoadFromFile(filename); String ext = ExtractFileExt(filename).Delete0(<span class="synConstant" style="color:#ff6666;">0</span>,<span class="synConstant" style="color:#ff6666;">1</span>); TStringStream* m2 = <span class="synStatement" style="color:#d88a17;">new</span> TStringStream(); TNetEncoding::Base64->Encode(m1.get(), m2); String out = StringReplace(<span class="synConstant" style="color:#ff6666;">"data:image/jpeg;base64,"</span>,<span class="synConstant" style="color:#ff6666;">"jpeg"</span>,ext,TReplaceFlags() << rfReplaceAll) + StringReplace(m2->DataString, <span class="synConstant" style="color:#ff6666;">"</span><span class="synSpecial" style="color:#c000c0;">rn</span><span class="synConstant" style="color:#ff6666;">"</span>, <span class="synConstant" style="color:#ff6666;">""</span>, TReplaceFlags() << rfReplaceAll); m2->Clear(); Response->ContentType = <span class="synConstant" style="color:#ff6666;">"application/json; charset=UTF-8"</span>; Response->SetCustomHeader(<span class="synConstant" style="color:#ff6666;">"Access-Control-Allow-Origin"</span>, <span class="synConstant" style="color:#ff6666;">"*"</span>); Response->SetCustomHeader(<span class="synConstant" style="color:#ff6666;">"Access-Control-Allow-Headers"</span>, <span class="synConstant" style="color:#ff6666;">"X-Requested-With, X-PINGOTHER, Content-Type"</span>); ja->AddElement(<span class="synStatement" style="color:#d88a17;">new</span> TJSONObject(<span class="synStatement" style="color:#d88a17;">new</span> TJSONPair(<span class="synConstant" style="color:#ff6666;">"img"</span>,out))); m2->WriteString(StringReplace(ja->ToJSON(), <span class="synConstant" style="color:#ff6666;">"</span><span class="synSpecial" style="color:#c000c0;">\</span><span class="synConstant" style="color:#ff6666;">"</span>, <span class="synConstant" style="color:#ff6666;">""</span>, TReplaceFlags() << rfReplaceAll)); Response->ContentStream = m2; } <span class="synStatement" style="color:#d88a17;">catch</span>(Exception& e1) { Response->Content = e1.Message; } } |
The output JSON is as follows.
1 |
<span class="synSpecial" style="color:#c000c0;">[{</span>"<span class="synStatement" style="color: #d88a17;">img</span>":"<span class="synConstant" style="color: #ff6666;">data:image/jpeg;base64,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</span>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"}] |
Ext JS design.
Create image
and button
screens using Sencha Architect.
Add Store.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
Ext.define(<span class="synConstant" style="color:#ff6666;">'jsonimage1.store.Store1'</span>, <span class="synIdentifier" style="color:#51cfcf;">{</span> extend: <span class="synConstant" style="color:#ff6666;">'Ext.data.Store'</span>, requires: <span class="synIdentifier" style="color:#51cfcf;">[</span> <span class="synConstant" style="color: #ff6666;">'Ext.data.proxy.Ajax'</span>, <span class="synConstant" style="color: #ff6666;">'Ext.data.reader.Json'</span> <span class="synIdentifier" style="color: #51cfcf;">]</span>, constructor: <span class="synIdentifier" style="color:#51cfcf;">function</span>(cfg) <span class="synIdentifier" style="color:#51cfcf;">{</span> <span class="synIdentifier" style="color:#51cfcf;">var</span> me = <span class="synIdentifier" style="color:#51cfcf;">this</span>; cfg = cfg || <span class="synIdentifier" style="color:#51cfcf;">{}</span>; me.callParent(<span class="synIdentifier" style="color:#51cfcf;">[</span>Ext.apply(<span class="synIdentifier" style="color: #51cfcf;">{</span> storeId: <span class="synConstant" style="color: #ff6666;">'Store1'</span>, proxy: <span class="synIdentifier" style="color: #51cfcf;">{</span> type: <span class="synConstant" style="color: #ff6666;">'ajax'</span>, url: <span class="synConstant" style="color: #ff6666;">'http://localhost:8080/img'</span>, reader: <span class="synIdentifier" style="color: #51cfcf;">{</span> type: <span class="synConstant" style="color: #ff6666;">'json'</span> <span class="synIdentifier" style="color: #51cfcf;">}</span> <span class="synIdentifier" style="color: #51cfcf;">}</span> <span class="synIdentifier" style="color: #51cfcf;">}</span>, cfg)<span class="synIdentifier" style="color: #51cfcf;">]</span>); <span class="synIdentifier" style="color:#51cfcf;">}</span> <span class="synIdentifier" style="color:#51cfcf;">}</span>); |
Create a button event for Ext JS.
1 2 3 4 5 6 7 8 9 10 11 |
onButtonClick1: <span class="synIdentifier" style="color:#51cfcf;">function</span>(button, e, eOpts) <span class="synIdentifier" style="color:#51cfcf;">{</span> <span class="synIdentifier" style="color:#51cfcf;">var</span> me = <span class="synIdentifier" style="color:#51cfcf;">this</span>; <span class="synIdentifier" style="color:#51cfcf;">var</span> store = Ext.getStore(<span class="synConstant" style="color:#ff6666;">'Store1'</span>); store.load(<span class="synIdentifier" style="color:#51cfcf;">{</span> callback: <span class="synIdentifier" style="color:#51cfcf;">function</span> (records) <span class="synIdentifier" style="color:#51cfcf;">{</span> <span class="synIdentifier" style="color:#51cfcf;">var</span> img = me.lookup(<span class="synConstant" style="color:#ff6666;">'json_img'</span>); img.setSrc(records<span class="synIdentifier" style="color:#51cfcf;">[</span>0<span class="synIdentifier" style="color: #51cfcf;">]</span>.get(<span class="synConstant" style="color:#ff6666;">'img'</span>)); <span class="synIdentifier" style="color:#51cfcf;">}</span> <span class="synIdentifier" style="color:#51cfcf;">}</span>); <span class="synIdentifier" style="color:#51cfcf;">}</span> |
Design. Code. Compile. Deploy.
Start Free Trial Upgrade Today
Free Delphi Community Edition Free C++Builder Community Edition