06-01-2012 03:56 AM
Hi,
I tryed to start MDS, but then this pops-up:
Error: loading: C:\Jre7\bin\msvcr100.dll
Error occurred during initialization of VM
Unable to load native library: Can't load IA 32-bit .dll on a AMD 64-bit platform
C:\BlackBerry WebWorks SDK 2.3.1.5\mds>
I have installed Win7 64 bit.
Don't know whether is BlackBerry WebWorks SDK 2.3.1.5 - 32 or 64 bit, I have downloaded it from: https://developer.blackberry.com/html5/download/sd
Can you please advice?
06-04-2012 09:40 AM - edited 06-04-2012 11:04 AM
I don't know if there is a better option or not, but you could always download the JDE and use the mds from within that JDE...
http://us.blackberry.com/developers/javaappdev/jav
The MDS I am using is part of the 7.1 JDE which I installed prior to delving into webworks.
I will do my best to help you out but I am sure there is many more people who would be better in providing support for this matter. It is my suggestion that you create your own thread to address this issue as I believe this will lead to a faster resolution concerning your matter.
Let me know how it goes.
06-04-2012 10:01 AM
Hello Erik,
I got a little sidetracked last week. The application is very near completion and as I was waiting for the UI to be finished I started developing another app(which is nearly done as well..), so I hadn't gotten around to testing the base64 issue.
However I will be doing that today or tomorrow and will post back here with results.
regards,
justam
06-05-2012 06:54 PM
06-19-2012 01:33 PM - edited 06-19-2012 01:35 PM
Hi Erik,
It seems as though the encoding methods are very different. Even though it is encoding to base64 I am getting very different results from my server generated base64 data.
Here is my code:
var file1 = "file:///SDCard/bgd.png";
if(blackberry.io.file.exists(file1)){
blackberry.io.file.readFile(file1, handleOpenedFile);
}else{
alert("File does not exist!");
}
function handleOpenedFile(fullPath, blobData) {
try{
serverBase64 = "iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAIAAAABc2X6AAAQi 0lEQVR4nO1aaXhUVZo+5251a0stqaSSSipLJaFCEpIQiSwJiPI 44sYiAbe2FbX1kbaxR+1H2z/qr+lBbXtmbGbmeabpkQFFBUVEw AiCgAESAoIsCUtCFgghldR66+7nzI8bKkVlYUnS7fN03h+V+56 69zvfd77vvOfcU4EIIXAVEEIAAMYYQqh93jLVrP0cqfYn5rGG2 K3xLTGa8O1gOtyDN0vHAwTGOBZzQq+x9oQb4r8dksYeGSUd7Nj oKdRKOpbxG0HCzeNHxwNUfDdDTktwAzUMxqGkb7ygborC+KT/n OfeWGFgDidgNKWYYPBnRQkwDIbLIb6KIWnM7uiVZpykixpySEa eCcONX/wAJVT4rdExnGUxSkA4MJO16/iO40Md7tvBTo+hUCfMu NHTGxWtvwvGI8MwNgNHWBJAXJJvhP6cQSVMaw0J8ccawc3M89E X9o1uj2+GEgnuJtS9hsEtw2FMtGq4fseEjiRaQz55IxjbsMcW/ 3CiNbDxSNhmDu77b0/HcHkbqOLBBwBgkBSBOB0eQQ+GvP+W6Th haNHqX7Ju0t14Iwk2b43GMIZ0QrSuYkK0JkRrQrQmRGsM6JhjW NFKwHjox43QMQd1/VtuGPFzIb4yR0MT1GH0lBqyYgeLUCyeWFS D6WgHbBgfxpZecxA/5MDEWq47iuOqrmMFiBCCEAqC0NTUhBAym 80ej4cgBtQ7IaVgxFSPbQWOXFDXpbIsNzc3S5JkNpvz8/P7LWs rwSuvvFJ9x9xpM2YZrPZNmzapqooQwnH4e9HRYMWKFbNmz6mYP tNkd6xZs0YLqj+TZ8+erZ53t6fidllvamxs5DguGo3yPI8x5nk +Go1KkiQIQjQalWVZURSe53meV1WV53lFUbTGUCgkyzIAIPasq qqhUAghJMtyNBoVRTFmMNbI8zxCKBKJaBeSJGGMw+GwRgVBwBg LgoAQCofDmgVtXEKhkEYFQYhEIhhjURQVRVEURZIkAEBHZ+fMu Xdll02TWPOZM2c0UwOidfhkU/OVAIKkz+f77rvdO3fuolnD8ie f+Ld//8DrLbitomL7jtoMV1rXZd+SxQ+u++hjq9VaXVW1bdt2r 9dbNNn7/d59ZrOxtLTMkpT0+RdfiJLym1+/sOGTT0kSIkBWlJd u3/ENTTPLn/rlu++9752Ur2ONpSWTN3+5JSsrq7Jy2qefbczPy 7v33nu2bt3m8XhOnjxhNic9/9yzD9U88v4f31n7f+tnzpheV1e XnZ2z/KknaJr+6/9+eLnrst2RsnjRglWr3rFYLFVV1Q0NDVlZb kmSVVV55umnVFU92nT2dG9EhQTP836/3+l0Duylo5LMYQJStCi KoVD4Sh8XkQ1hHvdxNKGz3zZtWlikz3VGgM6BINPHUUeaAzm5n qefeaa5tbvA64WM1ZXl3VvftO/A0V8++dS99y/ad/BHX1B5aeX K3hDiBHTnvPn33Lfw6IlzZrt7xYoVbZc5Xga9YVA05TaPJ49kk 4+d8UUFJKjM/kM/LVi05GxH6NLlnvQs71/Wfdnlx5nubF7VHzv ji/JSOMId/fGnf375t0tras6ca62YNvOZZ587eOQMY7DXNZ5tP NEOGQsAAGPAyYrEmgnWIIqiVgXkm2++CSHcsGFDlGJ7RUX0+0q yXGXlUwnGnJ03pazYI6iMyZLCC5LFYnn68UUhnvRkp5WUTM7Nz c/KTEt1WCGlryjz9gb5tksBV3r64gfu3PT1vp4+7vGl8yHFbvv ucOXUKZmZrobjrcGwtPDe6paLwZPNnVXTy52pDk6iBJVOtpoDn Jya5i4v9qiYvmde1fbdR5KsyWXFHkjqf/XUkm6/mu/J9EdwRma WJytlX13jzBmVn2ze7fNH7ppdeaDh1LHTbcsW340gPWvGtMrby lmjxZOVuv6jjwSdMUCbhb7uqdnp06dPt9vt/bq6cOFCH2s7H5H 7zp1+dMaUV1991eVyUdTNbUsghCaTiSAIbarf1LODwTCMXq8fj YUHFixQnTk/yvq+I/uWzyp96aWX8vPzB0KCFG1ItkU4flfdoZO /ep68ye2dihDH848urZldXf3a678nKQohBAAGYARD8es2jG8VJ YmmqA3r173//p8O1ddjjK+9+fqAAPT6/XOm3A66BUCQsfYB0VI J0mBzOOzpxXfMzjLpaKQAAACEAGOAMcYIYAQQBrG+IQQAQpJka Fqn0/UEgl/v2rN+wyfhUOj2O+6aVFTc5evlBFFWESAIAAmgbWM wBhhhhDSzAF99OYUEIAiapg16PUGSe4/8dPjbr2traw80HH7+5 d8FIlwwzMmKggCEEILY/g8jjDFACGCEVRVgDAlC85mhSEDrmgN RXgoDVY2F2Z9hhmH8EV50MP5I9Ptjh5DvIsAYEORVLxFAKlBVj BBA6sAwEiTUsUxqZnJOgRDlenp6SJ7nOO5wS+epnmDTxe5gdxf iOQBhf8wDAatAVQFGILY5gxCQFGlxWPIKbc70jm6/qqqBQCAQ4 bbtP9QZEds7Ovm+HqwqAELYP3y43x9VxaoCAIAkBQgCAAgwgiT NZhdQWV5ViCIuaDAYtJj7/+WhtLR0++ZdTMZkrMjC6QYU8PXXR azQNM9wLLcAAAwwAAQhdXeymXnhgB/1Xc4vKsjLy/vrV7UUNiL GLHYdVP1XtFqIK7c4U7EuMAAAQ4o2moyRzDwVEgAAu90u8dE9D UeVJId8sU1paxooWDiUVwOZx4CkCaOJLL9Dbf4RckGXy9WfYW0 vtnTp0vf+slb2ddMFpab5j9uP7Hj+8UdKSkoEQZBlWdv9DOSVI CiKMhqNbW1tH2/4xJid32Vk+lpPQS5UNWtmeXm5hVBDssIUTGZ SXdQPW1b+YtmcOXMURRFFMf6Apd8DimJZVhTFjRs3nmppK7nvg QMX/T2KAgCWZXnhffP/e8s3jNnOTJlBQrCg3LtsaQ1FUYIgqHG FCq6+zDMMo9Pp6urqvtpR631gwd7z55S25nQTm5WVxTAMQRDkW 2+9BQBITk6+0nHh4A/7SUe6taAkOTPnUO3XjQf2G/T67Oxsj8f jdDqdTmdqampycjJJkqdPn/70s8+OnzxVdfc9UYI5sHOH3NVW4 c2fP/+ewsJClzO1dusWwuEy53rd3uKj+7/f8eXnQpTLyMhwu90 Oh8Nms9lsNovFwjDMuXPnNm/evPHzL7K9RSUzqo6eam7p7pW4k Hql864ZlQsXLvx2y+agghlXbkbFrN4r3bu+3BQNhzwej9frTUt LS09PT0tL0xwjCKKxsfHDtWujijr3wcV1R493HtwNey89+ciyg oICj8djNBoHzrRCodDyp5/e+lMLUzzd4s7NNdGpUjDSfq73Yrv MR416PUVRAGBJkhmWzc0v8BR4/VH+u/0Hmk6dQJHgpEzXr1e8k JubW1lZaTKZ3n777ffWbdSVzDBk5LhNjBuK8pUO38XOaChg1Os ZhoYASrKMAcz2ePK8hazF/sPRYw1Hf4zKiM4rQTwnHa/7w+9W1 tTUXLhwYcljT0Scueykcld6ei4L8KWWngvnxHDQYjazOgZCqKp IEEWSpguLS9ye/KbWtl3763ovdeJIcPmjy2bNmlVeXj558mSWZ QdeDxFCwWDw92+8sX7LNsmWTjndBqs9zWJKN+ttLG2kKZYmCQg VFYW5aNvFi60tLb7ONoULE4pUXXnbokWLXC5XRUWF2+2mKIrn+ dWrV6/6j9VBxkzYUnUGY0qSMd1uTbWYTAytZ2iKphGAoqJe8vW 1dXS2tbaIfh+KhiFBWhc/J/ZdEepr//DKb5YsWZKRkVFfX//bV 149fqmXSMumk50Ou82VZHQadWaGMtAkTZEAQElR/KFwS1v7+ea mcE83kngryzy2bGlpaWl+fn5paanNZoNanLHXOm1HvmfPng/+v HpvQyPWmwizDeoMgCRJgiAARoqsiAIWeSzymI9ASfTm5f7T3Xd 7vd7U1NTS0tKMjAyWZU+cONHe3i5JEkLoyy1bvti6LapiyBqhj gUkRRAERZIYAFVFSFWALGGJR3w0SUc9vOShTdtr83+x8sTpZuH g9n95+cWampqsrCxFUTo7O9euXfvh+o87fH2E2QZNVkgzJElQJ AmRqkiiLPBIiGIhinnOQJN3zq6eM2eO3W4vKCgoLCy02+0kSUI IqfiDFYIgkpKS5s2bV1FR0dzcvHPnzoaGhrbOi4EwF+ajqoogA EY9azEa07LSCr3e8vJyq9Wq1+tzcnJycnIcDgdN0y0tLYtrlha WlIY4rv382f/5z9UvrVy5c+fOffv2nT1/vtfvj0SjvCwDAFidL smgT7Yk5WTnl5WVlZWVYYy/P1ifQqhqTyeURJIkNd8YhnG73S+ ++OLDDz984MCB3bt3H//pRI+/JxKNRngBAEBTVJJBb0syZxcWl 5WVeb1eiqKSk5Pz8vLcbre2/+uPNCZ0+Oo7NMZYluVIJOL3+wO BgPYZiURkWVZVlSRJTQm10XE4HE6n02azGQwGzWgkEplZPds1d YY1LeNkUxN/5thbr79WVTVLM+jz+TiOE0VRVVUIIUmSBoNBp9O Zzebm5ua169ZVz39wx4nz5xoPJqvcB+//sbKy0u12a74ihHieD 4VCfX19oVDI5/Npb5GaXGtqT5KkTqezWq1OpzMlJSUpKYlhmGt OZkc4iNcWEu31VRAESZI0LzXTer3eYDCwLEvTdPwJCQBgzZo1L 7zxFlNWbcud5ABS6Mhet5ldvHDBzJkz09PTZVmOBQwh7O7urq+ v/6a21mAyz5g7b2vd4cb6gyDge/axZfPnz58+fXpqamr8MqblQ /OK53lRFGVZ1sqTYRiWZY1Go16v1+l0Wg0nrIIjnWnF9xG/FMM 4xA9W7AZZll97/fXVG7+iCqeZcyblWAwpcijU2hTu7pKFaLLNZ kmyAAgikYg/EEiyWHPzC/K8k1u7ur/dX9d1oRVFgg/cNWfBggV TpkwpLi42GAxgKMQfbsR8iJXucLhGtAYHfMtnWhzHvfPuu6v+/ F/ImUOlZZnsjgxbksvMOvW0DmAKIIokGYYBJHXFH2ht72g6fcp 3+TISeUriH3rw/rlz52ZnZ0+dOtXhcGgzeYROb4qO10E8xpjju IaGhn9dtWr/4aMizRImGzSYIMUQJEETEKqKKAiqEEU8hwUOi7y OAFOLi+6///6UlBSPx1NUVJSSkkJR1Niey/dnOMHp+CJJoIPzf 425uFRrGuPz+Y4dO7Znz57v9+1vae8QVVVBGGEAMCYAIAmgI4n szMypZaVFRUU2m81qtebm5ubm5losFu2FPKF8RkkTfyIdMoaRh yD+2YTh1AQmHA77/f5gMBgIBDo6Onw+XyQSQQjRNG0ymbS9KkE QFoslLS0tLS3NarWyLBuzlpCGUdLE/4gfPBtvAQmPa8eXgiBwH MdxHM/zgiAoihKTVoPBYDQaTSaTXq+nKErT/Fs7yr4uHS/RGm4 uoKuIfUVcRUJKx0qlEug/3K+HxJClm7C+aRexz+Fo7CI+vaOkN 9j1jdPxFa1RYkxUKoH+LUTr1ug4iRYxuI/Bt0IIB18MSWOPx76 6ZRrvw1jSCdHq73VCtCZEa3hMiNaEaE2I1oRoXePSGNIJ0Yobj 1jLhGhNiNaEaI0JJkRrQrQmROu6mBCtCdG6BUyI1s9ItP4f2VO Io0ppbEsAAAAASUVORK5CYII=";
var baseBlob = blackberry.utils.blobToString(blobData);
alert(baseBlob);
alert(serverBase64);
if(baseBlob == serverBase64){
alert("Same");
}else{
alert("not the same");
}
}catch (err){
alert("Error: " + err);
}
}
The serverBase64 data is what my php is sending me and it does work using:
<img src="data:image/x-icon;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAIAAAABc2X6AAAQi0lEQVR4nO1aaXhUVZo+52 51a0stqaSSSipLJaFCEpIQiSwJiPI44sYiAbe2FbX1kbaxR+1H 2z/qr+lBbXtmbGbmeabpkQFFBUVEwAiCgAESAoIsCUtCFgghld R66+7nzI8bKkVlYUnS7fN03h+V+5669zvfd77vvOfcU4EIIXAV EEIAAMYYQqh93jLVrP0cqfYn5rGG2K3xLTGa8O1gOtyDN0vHAw TGOBZzQq+x9oQb4r8dksYeGSUd7NjoKdRKOpbxG0HCzeNHxwNU fDdDTktwAzUMxqGkb7ygborC+KT/nOfeWGFgDidgNKWYYPBnRQ kwDIbLIb6KIWnM7uiVZpykixpySEaeCcONX/wAJVT4rdExnGUx SkA4MJO16/iO40Md7tvBTo+hUCfMuNHTGxWtvwvGI8MwNgNHWB JAXJJvhP6cQSVMaw0J8ccawc3M89EX9o1uj2+GEgnuJtS9hsEt w2FMtGq4fseEjiRaQz55IxjbsMcW/3CiNbDxSNhmDu77b0/HcH kbqOLBBwBgkBSBOB0eQQ+GvP+W6ThhaNHqX7Ju0t14Iwk2b43G MIZ0QrSuYkK0JkRrQrQmRGsM6JhjWNFKwHjox43QMQd1/VtuGP FzIb4yR0MT1GH0lBqyYgeLUCyeWFSD6WgHbBgfxpZecxA/5MDE Wq47iuOqrmMFiBCCEAqC0NTUhBAym80ej4cgBtQ7IaVgxFSPbQ WOXFDXpbIsNzc3S5JkNpvz8/P7LWsrwSuvvFJ9x9xpM2YZrPZN mzapqooQwnH4e9HRYMWKFbNmz6mYPtNkd6xZs0YLqj+TZ8+erZ 53t6fidllvamxs5DguGo3yPI8x5nk+Go1KkiQIQjQalWVZURSe 53meV1WV53lFUbTGUCgkyzIAIPasqqqhUAghJMtyNBoVRTFmMN bI8zxCKBKJaBeSJGGMw+GwRgVBwBgLgoAQCofDmgVtXEKhkEYF QYhEIhhjURQVRVEURZIkAEBHZ+fMuXdll02TWPOZM2c0UwOidf hkU/OVAIKkz+f77rvdO3fuolnD8ief+Ld//8DrLbitomL7jtoM V1rXZd+SxQ+u++hjq9VaXVW1bdt2r9dbNNn7/d59ZrOxtLTMkp T0+RdfiJLym1+/sOGTT0kSIkBWlJdu3/ENTTPLn/rlu++9752U r2ONpSWTN3+5JSsrq7Jy2qefbczPy7v33nu2bt3m8XhOnjxhNi c9/9yzD9U88v4f31n7f+tnzpheV1eXnZ2z/KknaJr+6/9+eLnr st2RsnjRglWr3rFYLFVV1Q0NDVlZbkmSVVV55umnVFU92nT2dG 9EhQTP836/3+l0Duylo5LMYQJStCiKoVD4Sh8XkQ1hHvdxNKGz 3zZtWlikz3VGgM6BINPHUUeaAzm5nqefeaa5tbvA64WM1ZXl3V vftO/A0V8++dS99y/ad/BHX1B5aeXK3hDiBHTnvPn33Lfw6Ilz Zrt7xYoVbZc5Xga9YVA05TaPJ49kk4+d8UUFJKjM/kM/LVi05G xH6NLlnvQs71/Wfdnlx5nubF7VHzvji/JSOMId/fGnf375t0tr as6ca62YNvOZZ587eOQMY7DXNZ5tPNEOGQsAAGPAyYrEmgnWII qiVgXkm2++CSHcsGFDlGJ7RUX0+0qyXGXlUwnGnJ03pazYI6iM yZLCC5LFYnn68UUhnvRkp5WUTM7Nzc/KTEt1WCGlryjz9gb5tk sBV3r64gfu3PT1vp4+7vGl8yHFbvvucOXUKZmZrobjrcGwtPDe 6paLwZPNnVXTy52pDk6iBJVOtpoDnJya5i4v9qiYvmde1fbdR5 KsyWXFHkjqf/XUkm6/mu/J9EdwRmaWJytlX13jzBmVn2ze7fNH 7ppdeaDh1LHTbcsW340gPWvGtMrbylmjxZOVuv6jjwSdMUCbhb 7uqdnp06dPt9vt/bq6cOFCH2s7H5H7zp1+dMaUV1991eVyUdTN bUsghCaTiSAIbarf1LODwTCMXq8fjYUHFixQnTk/yvq+I/uWzy p96aWX8vPzB0KCFG1ItkU4flfdoZO/ep68ye2dihDH848urZld Xf3a678nKQohBAAGYARD8es2jG8VJYmmqA3r173//p8O1ddjjK +9+fqAAPT6/XOm3A66BUCQsfYB0VIJ0mBzOOzpxXfMzjLpaKQA AACEAGOAMcYIYAQQBrG+IQQAQpJkaFqn0/UEgl/v2rN+wyfhUO j2O+6aVFTc5evlBFFWESAIAAmgbWMwBhhhhDSzAF99OYUEIAia pg16PUGSe4/8dPjbr2traw80HH7+5d8FIlwwzMmKggCEEILY/g 8jjDFACGCEVRVgDAlC85mhSEDrmgNRXgoDVY2F2Z9hhmH8EV50 MP5I9Ptjh5DvIsAYEORVLxFAKlBVjBBA6sAwEiTUsUxqZnJOgR Dlenp6SJ7nOO5wS+epnmDTxe5gdxfiOQBhf8wDAatAVQFGILY5 gxCQFGlxWPIKbc70jm6/qqqBQCAQ4bbtP9QZEds7Ovm+HqwqAE LYP3y43x9VxaoCAIAkBQgCAAgwgiTNZhdQWV5ViCIuaDAYtJj7 /+WhtLR0++ZdTMZkrMjC6QYU8PXXRazQNM9wLLcAAAwwAAQhdX eymXnhgB/1Xc4vKsjLy/vrV7UUNiLGLHYdVP1XtFqIK7c4U7Eu MAAAQ4o2moyRzDwVEgAAu90u8dE9DUeVJId8sU1paxooWDiUVw OZx4CkCaOJLL9Dbf4RckGXy9WfYW0vtnTp0vf+slb2ddMFpab5 j9uP7Hj+8UdKSkoEQZBlWdv9DOSVICiKMhqNbW1tH2/4xJid32 Vk+lpPQS5UNWtmeXm5hVBDssIUTGZSXdQPW1b+YtmcOXMURRFF Mf6Apd8DimJZVhTFjRs3nmppK7nvgQMX/T2KAgCWZXnhffP/e8 s3jNnOTJlBQrCg3LtsaQ1FUYIgqHGFCq6+zDMMo9Pp6urqvtpR 631gwd7z55S25nQTm5WVxTAMQRDkW2+9BQBITk6+0nHh4A/7SU e6taAkOTPnUO3XjQf2G/T67Oxsj8fjdDqdTmdqampycjJJkqdP n/70s8+OnzxVdfc9UYI5sHOH3NVW4c2fP/+ewsJClzO1dusWwu Ey53rd3uKj+7/f8eXnQpTLyMhwu90Oh8Nms9lsNovFwjDMuXPn Nm/evPHzL7K9RSUzqo6eam7p7pW4kHql864ZlQsXLvx2y+aggh lXbkbFrN4r3bu+3BQNhzwej9frTUtLS09PT0tL0xwjCKKxsfHD tWujijr3wcV1R493HtwNey89+ciygoICj8djNBoHzrRCodDyp5 /e+lMLUzzd4s7NNdGpUjDSfq73YrvMR416PUVRAGBJkhmWzc0v 8BR4/VH+u/0Hmk6dQJHgpEzXr1e8kJubW1lZaTKZ3n777ffWbd SVzDBk5LhNjBuK8pUO38XOaChg1OsZhoYASrKMAcz2ePK8hazF /sPRYw1Hf4zKiM4rQTwnHa/7w+9W1tTUXLhwYcljT0Scueykcl d6ei4L8KWWngvnxHDQYjazOgZCqKpIEEWSpguLS9ye/KbWtl37 63ovdeJIcPmjy2bNmlVeXj558mSWZQdeDxFCwWDw92+8sX7LNs mWTjndBqs9zWJKN+ttLG2kKZYmCQgVFYW5aNvFi60tLb7ONoUL E4pUXXnbokWLXC5XRUWF2+2mKIrn+dWrV6/6j9VBxkzYUnUGY0 qSMd1uTbWYTAytZ2iKphGAoqJe8vW1dXS2tbaIfh+KhiFBWhc/ J/ZdEepr//DKb5YsWZKRkVFfX//bV149fqmXSMumk50Ou82VZH QadWaGMtAkTZEAQElR/KFwS1v7+eamcE83kngryzy2bGlpaWl+ fn5paanNZoNanLHXOm1HvmfPng/+vHpvQyPWmwizDeoMgCRJgi AARoqsiAIWeSzymI9ASfTm5f7T3Xd7vd7U1NTS0tKMjAyWZU+c ONHe3i5JEkLoyy1bvti6LapiyBqhjgUkRRAERZIYAFVFSFWALG GJR3w0SUc9vOShTdtr83+x8sTpZuHg9n95+cWampqsrCxFUTo7 O9euXfvh+o87fH2E2QZNVkgzJElQJAmRqkiiLPBIiGIhinnOQJ N3zq6eM2eO3W4vKCgoLCy02+0kSUIIqfiDFYIgkpKS5s2bV1FR 0dzcvHPnzoaGhrbOi4EwF+ajqoogAEY9azEa07LSCr3e8vJyq9 Wq1+tzcnJycnIcDgdN0y0tLYtrlhaWlIY4rv382f/5z9UvrVy5 c+fOffv2nT1/vtfvj0SjvCwDAFidLsmgT7Yk5WTnl5WVlZWVYY y/P1ifQqhqTyeURJIkNd8YhnG73S+++OLDDz984MCB3bt3H//p RI+/JxKNRngBAEBTVJJBb0syZxcWl5WVeb1eiqKSk5Pz8vLcbr e2/+uPNCZ0+Oo7NMZYluVIJOL3+wOBgPYZiURkWVZVlSRJTQm1 0XE4HE6n02azGQwGzWgkEplZPds1dYY1LeNkUxN/5thbr79WVT VLM+jz+TiOE0VRVVUIIUmSBoNBp9OZzebm5ua169ZVz39wx4nz 5xoPJqvcB+//sbKy0u12a74ihHieD4VCfX19oVDI5/Npb5GaXG tqT5KkTqezWq1OpzMlJSUpKYlhmGtOZkc4iNcWEu31VRAESZI0 LzXTer3eYDCwLEvTdPwJCQBgzZo1L7zxFlNWbcud5ABS6Mhet5 ldvHDBzJkz09PTZVmOBQwh7O7urq+v/6a21mAyz5g7b2vd4cb6 gyDge/axZfPnz58+fXpqamr8MqblQ/OK53lRFGVZ1sqTYRiWZY 1Go16v1+l0Wg0nrIIjnWnF9xG/FMM4xA9W7AZZll97/fXVG7+i CqeZcyblWAwpcijU2hTu7pKFaLLNZkmyAAgikYg/EEiyWHPzC/ K8k1u7ur/dX9d1oRVFgg/cNWfBggVTpkwpLi42GAxgKMQfbsR8 iJXucLhGtAYHfMtnWhzHvfPuu6v+/F/ImUOlZZnsjgxbksvMOv W0DmAKIIokGYYBJHXFH2ht72g6fcp3+TISeUriH3rw/rlz52Zn Z0+dOtXhcGgzeYROb4qO10E8xpjjuIaGhn9dtWr/4aMizRImGz SYIMUQJEETEKqKKAiqEEU8hwUOi7yOAFOLi+6///6UlBSPx1NU VJSSkkJR1Niey/dnOMHp+CJJoIPzf425uFRrGuPz+Y4dO7Znz5 7v9+1vae8QVVVBGGEAMCYAIAmgI4nszMypZaVFRUU2m81qtebm 5ubm5losFu2FPKF8RkkTfyIdMoaRhyD+2YTh1AQmHA77/f5gMB gIBDo6Onw+XyQSQQjRNG0ymbS9KkEQFoslLS0tLS3NarWyLBuz lpCGUdLE/4gfPBtvAQmPa8eXgiBwHMdxHM/zgiAoihKTVoPBYD QaTSaTXq+nKErT/Fs7yr4uHS/RGm4uoKuIfUVcRUJKx0qlEug/ 3K+HxJClm7C+aRexz+Fo7CI+vaOkN9j1jdPxFa1RYkxUKoH+LU Tr1ug4iRYxuI/Bt0IIB18MSWOPx766ZRrvw1jSCdHq73VCtCZE a3hMiNaEaE2I1oRoXePSGNIJ0Yobj1jLhGhNiNaEaI0JJkRrQr QmROu6mBCtCdG6BUyI1s9ItP4f2VOIo0ppbEsAAAAASUVORK5C YII="/>
and if I include it on my vcf it will display the image in the contacts app.
So it seems passing my base64 to contact.setPicture is not going to work. I might be stuck downloading the image from my webserver and getting the blobData that way. I'd prefer not to go this route however. Any ideas?
Regards,
Justam
06-20-2012 01:58 PM
Hello Justam,
The concern of downloading the image vs. getting your stored Base64 data, is that a matter of transmission size or do you have other reasoning for avoiding that?
From what I see, instead of saving just the data to your own local DB and loading that for setPicture, if you simply save the image to the filesystem and re-use that, that should effectively provide the same result as if you had it in a database (aside from some differences in how the data is accessed.) This would avoid "re-downloading" the image each time and, at this point, if it is a viable workaround, may be something that needs to be explored.
I have a feeling the data is still being lost somewhere in that blob conversion, unfortunately I'm not sure what else to recommend at this point that we haven't tried already. For refrence, what does baseBlob come out as (assuming it is the "same" photo to begin with)?
06-20-2012 05:27 PM - edited 06-20-2012 10:55 PM
I would like to avoid downloading the image file as the image will only be used once for that request and will be destroyed after the contact has been saved. Also because there will be simulateous requests to my server from many different clients I think its best to send the base64 or binary data.
The image and the base64 data are the same. When i tried to show the blobData it have me an unspecified type error. So I called :
var baseBlob = blackberry.utils.blobToString(blobData); alert(baseBlob);
Which gave me some data starting with:
PNG
....
If i decoded my base64 data I also got the same
PNG
....
So maybe the question is how can I take my decoded base64 data and put it back into a blob which the system can use.
blackberry.utils.stringToBlob(data, "binary") was a hack which tim implemented on the playbook sdk. I couldnt find the files/parts of the ext which needed replacing to take advantage of this hack. So using the binary call I'm stuck.
What I am thinking now as I can't think of how to convert the output of blobToString back to stringToBlob is using the binary data from the image file directly and recieve that through an xmlhttp request.
I think if I capture the php buffer for the image data(which is coming from a cropped image) it should be the binary image data, so I can store this in a string, insert into mySQL db and then call when the request is recieved from the client. I don't know if I will need to encode/decode the data but worth a shot for the short term.
Is decoding the base64 decoding to binary?? I am a little confused on all this decoding/encoding and I think thats the cause of all this fuss.
Here is my base64 decode function:
var keyStr = "ABCDEFGHIJKLMNOP" +
"QRSTUVWXYZabcdef" +
"ghijklmnopqrstuv" +
"wxyz0123456789+/" +
"=";
function decode64(input) {
var output = "";
var chr1, chr2, chr3 = "";
var enc1, enc2, enc3, enc4 = "";
var i = 0;
// remove all characters that are not A-Z, a-z, 0-9, +, /, or =
var base64test = /[^A-Za-z0-9\+\/\=]/g;
if (base64test.exec(input)) {
alert("There were invalid base64 characters in the input text.\n" +
"Valid base64 characters are A-Z, a-z, 0-9, '+', '/',and '='\n" +
"Expect errors in decoding.");
}
input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
do {
enc1 = keyStr.indexOf(input.charAt(i++));
enc2 = keyStr.indexOf(input.charAt(i++));
enc3 = keyStr.indexOf(input.charAt(i++));
enc4 = keyStr.indexOf(input.charAt(i++));
chr1 = (enc1 << 2) | (enc2 >> 4);
chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
chr3 = ((enc3 & 3) << 6) | enc4;
output = output + String.fromCharCode(chr1);
if (enc3 != 64) {
output = output + String.fromCharCode(chr2);
}
if (enc4 != 64) {
output = output + String.fromCharCode(chr3);
}
chr1 = chr2 = chr3 = "";
enc1 = enc2 = enc3 = enc4 = "";
} while (i < input.length);
return unescape(output);
}
06-20-2012 05:50 PM - edited 06-20-2012 11:02 PM
Originally posted from my 9700 as the edit capabilities didnt seem to be present on the mobile website. The content from this post has been appended to the above post. Please ignore this post.
06-20-2012 10:37 PM - edited 06-20-2012 11:56 PM
Hi Erik,
So I figured it out...
I needed to decode my base64 string using that javascript function above and then I called blackberry.utils.stringToBlob(DecodedBase64String)
Now the only thing left for this app is to crop an image and get the base64 of that image and send it to my server...
I have been searching for a cropping sample for webworks and haven't found one. On my website I do use JCrop but it doesnt seem to work at all with non touch devices.......Do you know of a html5/javascript cropping utility which may work on the BB or is there some sort of webworks sample available I haven't discovered?
Kind of a side thought....The issue with jcrop seems to be with the trackpad / mouseevents within jquery/javascript. What happens is the intial click on the pic with show the crop box and then you can drag to the desired size. When you click again to accept the size of the box it dissapears. What I think might be happening is the mousedown or mouseclick events may not be working properly with the trackpad on non touch devices. I am thinking I may be able to bind those events to a keypress(eg ascii 13 for enter) which may allow the box to remain....just a thought...
06-21-2012 06:43 PM
Good work Justam!
You'll be a pro at this in no time. We don't have any native APIs to perform this sort of cropping.
The trackpad itself should send the necessary mouseevents, and it seems that JCrop would detect a mobile device for this as on a PC, the behaviour is more click/drag/release than click/move/click. The source code for the library is available should you want to dive deep into that :-) Alternatively, maybe a better start is to reach out to JCrop directly.
From what I can find, JCrop seems to be the leading solution for something like this.
Beyond that, the alternative that I can see is a lot of math, conversion, and byte traversing to perform this manually.