I need a simple way to encode the TBitmap of TImage into a base64 encoded representation for sending via JSON format. I don't want to make use of Indy libraries, instead I want to use what is built into current Delphi.
How do I Base64Encode a TImage in FMX application
76 views Asked by Andre Van Zuydam At
2
There are 2 answers
3
Fajar Donny Bachtiar
On
you can uses this function for encode
uses unit :
uses System.Classes, System.SysUtils, System.NetEncoding;
code :
function EncodeFile(FFileLocation : String) : String;
begin
if not FileExists(FFileLocation) then begin
ShowMessage('File Not Exist');
Exit;
end;
var Stream := TMemoryStream.Create;
var StreamOutput := TStringStream.Create;
try
Stream.LoadFromFile(FFileLocation);
Stream.Position := 0;
TNetEncoding.Base64.Encode(Stream, StreamOutput);
Result := StreamOutput.DataString;
finally
Stream.DisposeOf;
StreamOutput.DisposeOf;
end;
end;
and this for Decode
procedure DecodeFile(FData : String; out FStream : TMemoryStream);
begin
var Stream := TMemoryStream.Create;
var SL := TStringList.Create;
try
SL.Text := FData;
SL.SaveToStream(Stream);
Stream.Position := 0;
TNetEncoding.Base64.Decode(Stream, FStream);
FStream.Position := 0;
finally
SL.DisposeOf;
Stream.DisposeOf;
end;
end;
Related Questions in DELPHI
- How can I read the header of request to webserver
- Receiving Notifications for Individual Task Completion OmniThreadLibrary Parallel.ForEach
- Delphi - How to get result of function from QuickReport without viewing a report?
- Out of memory while adding documents to a Firebird BLOB field with Delphi
- How to MakeScreenshot fullpage on Delphi
- How to program a COM object with an IEnumerator, IEnumerable interface inside
- How to Dynamically Add Controls to Delphi Form
- How to write a string in Stringrid with DelimitedText in FMX Delphi 11
- TGrid/TStringGrid multi cell selection / multi editing in delphi firemonkey (12)
- How to localize "Today" in the Delphi TMonthCalendar?
- How can I call a SOAP webserver method in Vue.js?
- Efficiently Handling Large Number of API Calls with Delphi 10.4 and OmniThreadLibrary
- Delphi can not compile the unit create by its "XML Data Binding Wizard"
- Save Form Properties in File and then restore those Properties after reopening
- Is it possible to open a blob without saving it to file
Related Questions in ENCODING
- When sanitize/encode while implementing tags system like on SO
- Generating synthetic data for .ORC file in python
- WebClient.UploadData is returning control characters after non-ascii characters
- How to switch encoding of LibreOffice strings in Java UNO API?
- Userform to answer original userform
- Encoding problem on MySQL: Why some non-ASCII characters get encoded on more than 4 bytes?
- What encoding does the 'text' response type option in HttpClient use?
- Issue downloading audio with ytdlp on a raspberry pi
- KeyError: "['Building Age', 'Floor', 'Number of Floors'] not in index"
- FFMPEG fast quality video encoding without quality loss & less storage occupancy (maybe using GPU)
- Encoding attributes in an Genetic Algorithm
- React - MP4 - The file was loaded in a wrong encoding - 'UTF-8'
- How to re-encode an audio to match another one, to avoid re-encoding the whole audio
- Sqlalchemy - PostgreSQL - UnicodeDecodeError
- Calculate difference in encoding WITHOUT actually writing to a file?
Related Questions in BASE64
- How to use custom font during html to pdf conversion?
- Converting img src data to octet-stream
- System.FormatException: Entry is not valid Base64 string
- GitLab "Upload a File" API returns "file is invalid" after POST
- Adding a reset button for my digital signature
- I have a problem with decoding from base64
- Facing decryption error while decrypting encrypted payload using RSA Cipher Algorithm for GST and E-Way Bill authentication
- Base 64 : Illegal base64 character 3 Exception
- Media Recorder API encoding audio/mp4 stream to base64 string
- React Native preview Base64 encoded files
- Decoding base64 img in react getting error
- Trouble with HMAC Signature Verification Between Go and PHP for Encrypted URL
- How to read a .bin file and display the extact content of it in a table cell?
- Unable to decrypt Zoom AppContext - InvalidTag Error
- I cannot get Gmail to Base64decode correctly
Related Questions in FIREMONKEY
- How to MakeScreenshot fullpage on Delphi
- How to write a string in Stringrid with DelimitedText in FMX Delphi 11
- TGrid/TStringGrid multi cell selection / multi editing in delphi firemonkey (12)
- Tlabeledit component for FMX framework
- Fastest way to draw a wave distortion effect in Delphi FMX?
- Delphi FMX Android Printing with Sunmi V2 Device
- How to debug on Android device via WI-FI
- Default Text Property for Custom Button in Delphi
- How to capture Enter key (vkReturn) in Delphi FMX on Android?
- Getting list of devices plugged in in a pc (windows platform)
- Delphi FMX: How to write a custom shader filter?
- NetCom7 Chat Demo
- .dylib not Found Trying to Open the Program After Being Generated by PAServer
- Delphi - TakePhotoFromCameraAction - photo resolution
- How do I determine the "z-index" of a Firemonkey component that I have used SendToBack or BringToFront methods on?
Related Questions in RAD-STUDIO
- how to set c++ if...else statement for user input?
- How to close a C++ VCL form and open another one on a button click?
- How to build a Windows 64-bit platform static library (.lib) using C++ Builder 11 instead of .a file?
- How do I use .lib to compile and link in c++ builder 11.3 windows 64bits platform?
- Getting errors "Class TButton not found" and "Error reading Image6.OnClick : Invalid Property Value" when building an old project in a newer IDE
- NetCom7 Chat Demo
- How do I determine the "z-index" of a Firemonkey component that I have used SendToBack or BringToFront methods on?
- How do I Base64Encode a TImage in FMX application
- Rad studio not giving a platform to work with
- RAD Studio found some failed deferred GetIt packages
- How do I start another Android application from my RAD Studio Delphi Android application using a simple intent?
- Delphi RAD Studio add syntax highlight support for .ISS files
- How to turn the richeditcontrol devexpress Delphi 11 page with a code
- Unable to load URL https://getit-12.embarcadero.com when trying to load GetIt in Delphi 12
- The Skia does not support the platform iOSDevice64 in this RAD Studio version
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Popular Tags
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
I came up with the following which is working, it returns the base64encoded string which I add as a string pair to a TJSONObject.
I'm aware there may be a way to eliminate the TStringList, so a helpful addition or code change here to get the Stream straight to String would be good instead of having to load it to the TStringList for the result may be better.
Edited Below the refactored version as per @remy's suggestion