Reputation: 343
I receive a json that has a base64 string with a captcha image so that the user can see and type in the captcha content. the problem that I am not able to show this image in a TImage. the following error occurs:
class EPNGInvalidFileHeader the file being read is not a valid Portable Network Graphics" image because it contains an invalid header.
String base64
/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQg
HBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICI
sIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQw
LDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyM
jIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAAyALQDASIAAh
EBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAw
QFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDA
AQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2Jyggk
KFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZ
WmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmq
KjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2u
Hi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQE
BAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDB
AcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRo
bHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5Ok
NERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOE
hYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6ws
PExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6
/9oADAMBAAIRAxEAPwD3OiiitiRrGuN8b+Nf+EQ
+w/8AEv8Atf2rzP8Alt5e3bt/2TnO79K7BsnoK8j
+NYIOh5BH
+v8A/adenlFCnXxcKdVXTv8AkznxM3Cm5R3O78O61/wkO
gW2qfZ/s/n7/wB1v37drFeuB6Z6Vec1wfhfxLpnhv4c6TJqE
xVpPO8uNBud8SvnA9Pc8Ve0z4jaDq12lsrz20rnan2hAoY
+mQSPzrorYCqqlR0oPkTa
+SZlGrHlXM9Tp3NQOasPHJ/zzb8qgaOT/nm35VyxsNldzUD
modZ1BNF0ubULmKYwxbdwReeWCjqQOprCsfGmk39pdX
WZreG22h2nUDJbOAACcn5TXbSw9WcOeMbrYxlJJ2ZuOa
gc1gJ460WaKeQySxrEQAHTmQnP3QDnt3x1FR2XjTSdQu
RAGlhdjhfOUAMfqCf1rqWDrpNuD0MXOPc3HNQuax7HxXY
6nqiWFvFc+a5YKxVdpwCexz29K2Hjk/55t
+VOVKdJ2mrMi99iuxqBzVho5P8Anm35VA8cn/PNvyrSNjN3
IHNV3NWHjk/55t
+VQNHJ/wA82/Kto2MmQOagc1O8cn/PNvyqB45P
+ebflW8bGTIHNQManeOT/nm35VA8cn/PNvyrojYyZCTzR
QY5M/6tvyorTQg
+jKD0rE/4THwv/wBDJo//AIHRf/FUjeMfC+P
+Rk0f/wADov8A4qvgPq1f
+R/cz7DmRtL1NeS/G/8A5gX/AG8f
+066d/ir4Kt55YpNcQsjFSUt5XUkHHDKpBHuDg15z8U/Gnh/
xJ/ZP9k6h9o+z
+d5v7mRNu7Zj7yjP3T0r28lwOKp46nOdOSWurTtszmxLUq
LS3/4Ju+APh/p
+t6BbatrTyXUbh0t7YOyLGods5Iwc7tx4OOfeuc
+JPhKz8L6navp+9bS7RisbNu2MpGQCecfMOvvXS
+A/iV4V0jwdZ6dqGotb3MBkDKbeRgcuzAgqp7N
+lcX8QviFp/i27sjZW91HBbI3+vVQxZiM9GPGFHevYwkcxlm
cnNS9nd76K2trdO2qOepTh7BWXvaE3hzWvFt/qosNM1a7l
mnj2ZuJWdYl4JbDEgYxjOM88da7Sfwh4vs4DdWvi24uLtRu
8iTdsJ9BliPzArz3wb420rwz4gkvZbe7kt5LQQkIi7g/wAhJw
WxjKnv0x9K7W8+N2iLbO1npmoSzjG1JgkannnLBmI4z2NV
j6GN9ulhqK5dOi19bk0oLl99u5VvvFkniL4e6xbXsYi1G1MQk
AGA481RnHY54I/xrn/A/hmLxHd3JupXW1ttjPGhwXY5x
+HBrmZvFXnXOszfYtp1LPyiXiPMqyenP3cdutaPhPx9/wAIv
9s/4ln2n7Ts/wCW
+zbt3f7Jz979K7ngK9HDVI4aNpN3SutL2v8AqZ8kpTTmS6r
YW0njCXTLCIQQm6Fsi7i2DkKTknPXJr1CXwfoTad9j
+wRABcCUDEmfXd1z+leKz
+JJ5/ED6taWgjlNz9pWNmLhTu3YOAM810i/FLxPNIscemW
TO5CqqwSEknoAN9RjcFjKkaapu1lrr1CEEr8xB4MdY/Flm7k
KqiQknsPLauiXVNa8W38yaZcfYdPiODIOGPpz1z7DGK8702
71X7aFsrF553jkjWNIWYkMhU4A54BJ/CtPRL/AMWxTSadp
TLbSbyXhlWJCW4B/wBZznjp7fWujFYPmm6qceZJWvstXdk
Rg0rNnZajpuv6Lp1xcw63LdoEPmLKDuAPGVJJwR17Vp
+F55Ljw5bSzSvLKS
+53YsT8x7n2xXHalc/ELT7dm1CaKKMjlXa1JYegHU1Dpd14
+1O2aTT2Dwo204S3QA/QgVxTwkqlD3qkN907fLRFezs9z0
lzUDmuIPhfx3e/wCkz6p5Ej9YvtTJtxx0QbR0zx/OmHwd4z
HXW/8Aycl/wrnjhKK3rRE6fmdmxqBzXHnwj4xHXWf/ACck/
wAKjPw1mH/MR/8AIA/+KrVYfDL4qy
+SbM3Tj1Z1rGq0sixozuwVFGWYnAA9a5g/DmYf8xD/AMgj
/wCKpo+Hzq6l70smfmAiAJH13HFaqlhf
+fv4MzdOH834G0dW07P/AB/2v/f5f8aKzD4FtP8Anpdf9/E
/worTlwn87+4nkpd39x6T/wAKI8L/APP/AKx/3+i/
+N0xvgV4XH/L/q//AH
+i/wDjdepnpULmvjFnWYf8/WfQOnHscTa/CLwUkKRyaS8z
IoUyPdShnOOp2sBk
+wA9qivvgx4Ou/L8m2urLbnP2e5Y7846793T2x1rvIerfhUt
Z/2pjoyuq0vvY
+SLWx57N8G/BrWaQLZ3McigA3C3Lb29yDlefYCrFl8NfBvh
q3n1C5shdRwRtI73qiUKoGSdgXB49ia7VzTpYo54XhmjSSK
RSro6gqwPUEHqKHmeMkuWdWTT31F7ON72PB0k8BXXj/V
pbyG2TQZbVVt/KtnQLJiPlVVcqch
+cevrXUaB8OfAesK2o6ZNd3lskhjKuSihgASPuK3Qjv3rvf8A
hFvD3/QB0v8A8A4/8Kt2mn2lhC0NjaW9rEW3FIYwik
+uAOvA/Ku3EZvzQSoSnFpJfEraadt/MxjQd/fszK1Pw5p2o
eHJNCEZtrFgoC2+FK7WDcZBHUelZ/hvwhp/hT7V9hmuZPt
Ozf57Kcbc4xhR/eNdS0LHuKja1kPdfzrzo4qoqbpc3ut3a7v
+kW6avzW1OE8ZN4Wu7yDTtffyZzH5kM4yCoJxjcOnTvx
WDFbeCfCcb6ja38d9dopMAM6ysGxxgKMD6npXd674N0zX
yrahbI8qrtWVWKuo9MjtyeD61zQ
+EeiRy7zNduufuNKMfouf1r18Li8MqKpzqTS6pbP0OapTqc1
1FHDfDexkuPE4ugp8q1jZmbsCw2gfqfyrv9b8KaRrchmuoC
s5GDNE21j9ex/EVvWOg2+lWotrGGKGIc4XPJ9SepP1qR7S
T
+8v50YrMnWxHtqb5ei9CI0eWPKziLb4faFayB3W4uMdFmk
4/wDHQK30iit4lihjSONRhUQYAH0rRe0k/vL
+dQPaSf3l/Os54qdb
+JK4uS2yKTmoHNXXtJP7y/nUDWkn95fzpxlHuQ0yk5qBjV1
7ST+
8v51A9pJ/eX863jKPcyaZSc1A5q69pJ/eX86ge0k9V/Ot4yj3
MmmUyeaKmNpJn7y/maK15o9yLM9jPSoWoor42J9GxYOr/
hUp6UUUS3BbET1NRRQwQHpTV6miikMdRRRSAieoHoorW
JDIGqBqKK2iZMgeoHooreJlIgeoHooroiZMgeoHooreJkyBqg
eiitomTIT1ooorUg//2Q==
conversion function:
var
s : TMemoryStream;
png : TPngImage;
bb : TBytes;
begin
s := TMemoryStream.Create;
bb := decodebase64(memo1.Text);
if Length(bb)>0 then
begin
s.WriteData(bb,Length(bb));
s.position:=0;
png:=TPngImage.Create;
png.LoadFromStream(s); // The error occurs here
//objImg.Picture.Assign(png);
png.Destroy;
end;
s.free;
end;
According to the string provider, the image is a png, where am I missing? thanks!
Upvotes: 4
Views: 4479
Reputation: 7289
It decodes to the jpg image shown below. So as mentioned in the comments it is not a PNG image.
Upvotes: 9