Найти в Дзене
Ilya Engineer

Как сохранить картинку в базу данных. Как передать картинку из приложения на сервер. Кодируем в Base64. С#, Python

Для того чтобы сохранить картинку в базу данных, передать из приложения на сервер я нашел для себя простой удобный и широко распространенный способ - закодировать в Base 64.

На C# всё просто. Создаем обычное приложение. Используем библиотеку:

using System.IO;

Для C# я приведу пример по кодированию картинки из PictureBox:

По клику на кнопке Button1 выполняем следующую функцию:

private void Button1_Click(object sender, EventArgs e)
{
MemoryStream ms = new MemoryStream();
pictureBox1.Image.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
string base64 = Convert.ToBase64String(ms.ToArray());
textBox1.Text = base64;
}

теперь в строке textbox текст из которого любой браузер с легкостью сделает картинку.

Получаем мы такой текст (моя картинка):

R0lGODlhhAOEA/cAAAAAAAAAMwAAZgAAmQAAzAAA/wAzAAAzMwAzZgAzmQAzzAAz/wBmAABmMwBmZgBmmQBmzABm/wCZAACZMwCZZgCZmQCZzACZ/wDMAADMMwDMZgDMmQDMzADM/wD/AAD/MwD/ZgD/mQD/zAD//zMAADMAMzMAZjMAmTMAzDMA/zMzADMzMzMzZjMzmTMzzDMz/zNmADNmMzNmZjNmmTNmzDNm/zOZADOZMzOZZjOZmTOZzDOZ/zPMADPMMzPMZjPMmTPMzDPM/zP/ADP/MzP/ZjP/mTP/zDP//2YAAGYAM2YAZmYAmWYAzGYA/2YzAGYzM2YzZmYzmWYzzGYz/2ZmAGZmM2ZmZmZmmWZmzGZm/2aZAGaZM2aZZmaZmWaZzGaZ/2bMAGbMM2bMZmbMmWbMzGbM/2b/AGb/M2b/Zmb/mWb/zGb//5kAAJkAM5kAZpkAmZkAzJkA/5kzAJkzM5kzZpkzmZkzzJkz/5lmAJlmM5lmZplmmZlmzJlm/5mZAJmZM5mZZpmZmZmZzJmZ/5nMAJnMM5nMZpnMmZnMzJnM/5n/AJn/M5n/Zpn/mZn/zJn//8wAAMwAM8wAZswAmcwAzMwA/8wzAMwzM8wzZswzmcwzzMwz/8xmAMxmM8xmZsxmmcxmzMxm/8yZAMyZM8yZZsyZmcyZzMyZ/8zMAMzMM8zMZszMmczMzMzM/8z/AMz/M8z/Zsz/mcz/zMz///8AAP8AM/8AZv8Amf8AzP8A//8zAP8zM/8zZv8zmf8zzP8z//9mAP9mM/9mZv9mmf9mzP9m//+ZAP+ZM/+ZZv+Zmf+ZzP+Z///MAP/MM//MZv/Mmf/MzP/M////AP//M///Zv//mf//zP///8DAwICAgIAAAACAAAAAgICAAIAAgACAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAAhAOEAwAIrACvCRxIsKDBgwgTKlzIsKHDhxAjSpxIsaLFixgzatzIsaPHjyBDihxJsqTJkyhTqlzJsqXLlzBjypxJs6bNmzhz6tzJs6fPn0CDCh1KtKjRo0iTKl3KtKnTp1CjSp1KtarVq1izat3KtavXr2DDih1LtqzZs2jTql3Ltq3bt3Djyp1Lt67du3jz6t3Lt6/fv4ADCx5MuLDhw4gTK17MuLHjx5AjS55MubLly5hSM2vezLmz58+gQ4seTbq06dOoU6tezbq169ewY8ueTbu27du4c+vezbu379/AgwsfTry48ePIkytfzry5U0Q6nEufTn0oIho0qmvfzl3mdRrRu3iLH08e5HUd6MurX88eog7w78O3n0+/fXz06evr378dOnz04PEn4IDLfYcfftkRqOCCwJ13IIDyMSjhhLQ5+CCAFGaoIWuz3HchfhuGKOJoHn6I3YgopoiZfx9eqOKLMDpmYIsHJhjjjTgKZiGNEObo4496lcgjhkByFmnkW0IOmd+RTDY5FotK1mijk1RWidWMUT5o5ZZcRrVjlgh2KeaYR30JZnxkpqlmT0me+d6acMYpU4f/uamlnHjmiVKbbgao55+AdoSlnS4GauihE5lJaJiINupoQnwu6uejlD4a6aJLVqppoJdKGuGmZaDGCSWmPIZqKpyDknrhpKe2yqWiqhbq6qxUdhorq7TmCqStsWaq668xjtorjbgCa+yIqQ5L47HMIlunssR+2uy0C8IK7arUZrsgr9f6qu2383F77YnglsuesN0qae665CWbLrHsh8bb37Pv8lisvPgmJ269b+brr7708jvkvwQXty+/5BascG/oChzlwhDr5q7D9kZscW3WxppxtBd3DNvBWQa4Mbwel5wand1ih8gs14y8rMkwlwaykirPwrLLq04Z886cTUwqeIhcY3PLAWfJ89Gb4dynDizbfHPRNCMttWVKnwle004TTei9U8h3rdjMNK/sdNZV3+n12Yk1fCsNYo89dNk9oi13YWqrCrTQbr8Ntbpz9w2Yz5jenTfZe3Ps9+F7wR3l1XgP/jSmiEd+F9hDMu444VtLK/nmbFFu78qNX671opyXzlbdP7N9ed6jL90WdAciErTpXgPuadCru926nWv59x92QM9OO8+K06wD7rmPvTuYXIeFOvDHszy8ycVXznToyT9O+lm2A4hd9NNf7HmL8GGdPeZ2Nu/VLIWb+D3o4Rc8Pvmgn6978TqLRTn0wubHHy/qgWMb9uynPUKZpXpSQk///Pet7qXveAMk4PJClj+wzO9BQJMeA6mFwGiZj4DKq55Z2re192lwg8DqIPmuB8LBTTBkZVGhvVSGQmBdEIOqa6HjXmi8GJLQbiasYasAKKkc6tCF+PMhxbwHPiFuioiZQ94RWSdCssjQau9zIqUcuDQpTvF+P8ThCJeYMwhq8VBXxCALv4jEMMpqLG5MWRbPqKcbqvGDbAxhHBllxT2m6250hBPKxmXEPLYxcwf047sAGUgy2RFBhTQkFRVZQbCkcW1mbOSWuGg1CEpSdFU0yyPXJuxATVLpkgha4ycPmb5KhmWUpMykKYGESgjhcZV6hFxaOEnG+CxwljGC5XvahssdJnEtTOzl4mQJzBRBsZXELCYrXfc63ynTeL9spoae2SfVRVCaetPlW2T3HkUukpnanBAvQ+ZJcILSj+pTC+y+d80VZjOdA6plfG7pzlxury7zNOe40InP/QjTcv18JyLxMgvfCVRZjCxofQY5rvolVKH/zEtDy1nPVV1PovOhKEQjedFpdvJv0OsoguAH0vKsc5leLKlJ3RSYjaa0nnNsqXheis1vyhR91ByMNTuaU51WR58I/SlGDWiYoeI0ntpGPQ4sy+dTpYbzgV+7qTK/d8KoIkekELWoVZfKu8U4dave9CpypirAsSaPh9aTEUevWVS1Boen1oupW2fKPMg0VKtLrKtdeYNUVe6VrDSNjE2JytLBSuyhK+TnYcFYQsrYFLIPvKdjZcNWsU4WsWe6zFkp9r3N2gasvarZZ7MH18plZrQOo6FpY8PNTup1tXxdZtLmGtiIzlY1eLVXO3Gbu9ZWrGe8JS3jfpuawkqWuJTNKGeSS1rNMtczBzUsdEG7OFeuiLoIW+51QYPatUVzu6szbqlIRE/lWtN3vJbpLHrtp17ymQa89fItfKnWXogOd77FVRxUp9tfgZVyv/z9o3YBzN3FNRe/Cn4vgtOGWY8+l8HRZeqDK7w4CU+YMOW91YIxbEx4enc0we3ihxsjXxLTN5SsSbHVPLxivtSWed508fnqayLYwFbBXa0xSjmcytvquMQL9TGEoaVfIduYyKm88JEzXFbZyLi7NHZyXLIr5Sn7M6iy+SuUy6jlvYTYbuf1coDNiZslD0u2Za7LmQPoWTWvOcm2uXEJNRfn1xU4tW2184vZnBsxG5igzH3e5Z9FbGRBIxmrvBGmlLKcaK84t6qOnqQ4d3PluFY6LVzGdKapzDw+34ZOY64Roj/dlTkHrs6jvrN0CStp71Ga1VNpcawlKGBTF9rNQPQ1rqvSaTU2eteP1vBda+3LYW/l0sgGIY/VaJxi08/ZV0p1UqO942MWR899ujW2iSJfUXOb1KE9jqH/KN5xN8XVkkrzud8q4BP/BtylFre7edJZc88b3WBaDqoXeeB9l2nRdvvvv7tNyeZYe1X6NjhNHm5Lfy/8yydtDryLKLVsieck1Bdv4bQxOB2KF9njP9l4N+UdcnoTejrMjjjKUaJyLLK85bLupnYkDeeZ28TkgsO5yGFccoQDUeY+D0lhjy30BkeNOzzveNJPAu2mDx2eUlcOs6cOE5Bb/eqSGo/Jm831lej662Cf9XZqjfSySwTflQs02tOu8/IctOBuV7rRA6fwuQ9602Lf+6vzLpKq+53ufbLPmHtO+I0Y/vDS7nV7ap7xxmeE8sy7OeRdDnj16NNbr5aXCOax3OXNJ7vy7Rl71kN/EKD33fR/V7vnp7p61g/E9UyHfXolb9DF1571j9d95F+un1oO2PZeF74OR57KfAoe0rZHyOg7XHrlnz6xAoJ7tNouce0Ti6TWHz6e+eN9GnHf3bi3ePhza7RtQbnJjV+6+tevaegraJTwd3vw6S9+2ZM/1ef3abQ3YvwXe2BWLe/3e+M2fWFTfQV4fX1FIQ+Xfyh3dg94RMx3IBvySBTguG/pd4FslIHltCHl9yEBuGKu54AgCIEBFyKwdIIItn8r2H/pMyIcuGq4xoAzpHkzyHDjhxQNBTuyE2SZAUsSp4Pfx4M9yFrehhQOBR78g11Ednxa9oFLGIJEVxRL1oGScUlUWGPyd4V5JIIJYxS2EoWa4YUKuF8yKIY0WGVa6Eb0BIN9oYa4lnxuOEUi2C9xyHd0mDhTuIa/ZYF5qIe8RxQdJFiRUUt9VoI5A2uFiHhWYxQyhIaTYYdV+HyZNX+RyILtRxS+94d24YWi2Ext2IlviGNGkWq+RIRmpYkhU4r3pnSKqMhrxBcUn1dOeNcYacR414WExAKJtSiJEWgdrJhAi8hhvjhbwOg+SjiMPmh/QnGMOISDdANlsuhE/QaNkrSHghgT7LNV1ihUyviNpgiLtsWJ3OiJnkZu1GhPvFiOv5WC6riO7PcwRZGL7agYvWiOjTSAKmiPu4d1RhGORNVuh9GL2Tg9ByWMAkmMLZiP79iA/FhhyyhRjohDz/iQ0XiAQ8FsNMOFfmFHu1hQYciR3ZiFQtGMwbaQifRm46hJVoiShkSG/jgTwBZbX5gXj9RStEiTqZhuSeFQKsVRrvgXN7STNQSQ9QiU9yhcz5GTBuaSY5GUVOmJNg0ZkE45kJ2nFLIDWGSkiEiJWRd5Rhk5aVuJSzY5FT8WWB+lI1Y5SzOZljXZhFFxWU91lV9hkW9JRz9Jl0EZkVSBl3QVk6PIl430l4Bpi5WVFW0ZXo3lF1dUkhtEiIs5hippFY/JboZJF5VImfGTlZeplnapFZspR33ZFxdUlrRzlpCUe6MZmD1kSVI5UnqpFXaEQnMZm3XZcGJxmgN1lJNDljcpNYrJm4zpf1wBnLb5F44ImpKDh8jZm40ZQ7WZWqmZF595m/5imdOJmbdYFteZcNxJbMTZmt75nVjom7s0ngFUnEokYuSls5vqSZ3SiBbMOSzlmWtkuZ/gcpL1uUp7aG9P4p4l5J9RMT+s2TXHGaDJqWyvA5IcZWMQhTjS6aD2WXdwsW4I05mnc55zw5IaiaHg5I11YaArB4iphaAptI0kWkwDOooSipAnClkLSj3omG9N+aJceZ9yoXonx5MVJpwl06A8+qBwKGcoimMsyhQgijQXeqQZinp34Zomkp0/2p9Qqm0OKaVfZKJPRo00mqWpRaQQk55eCp4/yFBLimV4oaDwqS1W2mxpWqKZiRdAOkx4kaPXVqR8ClM7Wqc96pFm1qZxF6fLqaXWHWOkgoqk2Pc3IFmlNoqoxhKljTqlpQZitSaSoGajTXooWRmol+p0fEMYc2prdvGnGrkwc6pao2qnBHkYm/qpEjksCkOfr/pJYJqQqhqSlJptt0KrcsKoueqo7MSPW0cX43Oj2WKpxYqpxUhh2oalbME+D6WUNuR7BPis0CqYaRNqZIpm8hKq3OpOZEigNZVdynqt6Nqiiwd+5Sqgd8qroSgXwIitQ9SrwgWb8WqI7Ckj+pqE4fozwmolxNqvxqpbitWQA1tEZkorzoqw3epgl8ilcXGvv90KKGgqsSkZno9BccxaFp7aLK0KrxwrryZGNVNVsD4hQw8LKrh6sijblZGBf9B5Fp4TspoCoDILq2GHGTbLsj3BrkJ7Iwfbswk7myvyfjcbn6qiKxGLtBP7dK8VsI8IF8tatCkiomgptRe1q6/FgU37JOz6sqD6rhvptV9ab1LIZGP7m9easZtktVfKr2q7th4LtFP4tmDRjFq7TdOqlXcLkRTrGV7It1+RiHLrJFE7uFMLlaBxuH9rE1mrKaLpuF87r0s7hZNLEwb5M2YLJxuLubp6iJH7fp07E4mYuv/k56Kkm1Bge7rlyLoxkbPtmiYx+7qkGasoRpIe2hVxi0aBK6q6y4R5a7i+62fiqrHDW7wltZamcZb4ihXN+CdcWyNd6ryle7ygkby9c620a3doq70/Bb2oMUqdI1BjOia5S767S7PsFVZr8bnxJip061F2677ruaYyY5GI+2zqSwOhayRHq7+Ei4+rQZLhyxJI+L+7coyCa8DLZ7qqkZS/65gBPMA6Ijuw80Cp9MEgLFwh/CwkVCcmrEbGo0balmMS/LyliRoiur76o76LW63kpIsFBoXxocM8DCHwocM77MNB3MNBXMRA3MNILMRGfB9JTMREvEhp28Jqqpylcb0c8gRZC5wUQYjDRdnFXsxO+SvF+9tKsRGXnfozNf88Fpd1v1/cxh0awWI8wdxrGixzvzq7FeALl2DpxnzMx9sWx7D7wqsxmbdrmpD1F4TZx4rcx64KyDJlvj7Glxp8FTmbxTwhZhO5yJpsc45sVTE6G5OZxpRIw3thqJt8ykz2ep1srpoLXBZpyXuivrD8c2yMyrbsh8S7ygaIRbaxmg6smYcMUBJ6y8QcWbmsyx2ZpJxFnLNcEpU8F6dazNIsXHCMzHL8s73MYWlBynGRp9P8zQ9SzdZ8wJB7G7mJs7I8TsMMzuw8zp4syLT1ymdBvz7KPbXMzvh8pe6sVLGLMcyMzgSbvvk80Pyyz+XLto+lLPMczGhxvQT90Ptk0C4IPMfxvKIAPXj/aHHPEL3R4izRnLc1vaGgv0wV3OxDmbzR0nw1Hh3IvKsbzSjDXdFBzax3KF3TyrLSLA2/tkG30ysVJe08J23TxazSOO2z9XwblTjTIZGzZCvUTq0qRc3KFF0hZDnJU/HTMR3UkAQ8XN3VXv3VYB3WYj3WZF3WZn3WnhLVRk2ougGnLxk4lnTSXK1AHFzXdn3XeJ3Xer3XfN3Xfv3XgG1OHa3WAPeJvvHSSg0S6ewVzJZSQ6g7Vp2omUPYMErBDGOjhVwV+5PZTLGpGaRBteiNlP2+VIwbKtTTULHYuLnC0SM962iToz2zR70bCprYHrE/onwTxpdBAvGQoh3bHavTK7TNrmOE0VdhfOBDk7AN3I9rOMNx2rkNFOOTFTeYvcMo2sdM2f3cICPb1Mb/TRUk+ccoudzMPcZsHRJByMF6S55kMd3m6V/WzY2/Xd54i80k8YT8E9mIPKl9BNWDacGDfYXkTd8Y2MoaAWFBlIzB2t7mNNJAMZnxbY/zTeDXTMYj8UximRgXpN9NUT2oPbSAFsWv3WsU7q/CjRF6xtuN0cAO/hTLCxUiHcYjLtjZTdifvNQmxqnOSdzezb9DOakyPuOTXeIVft4ZAd22jYjBKxb03Ccc/nEjO50TTuS7PIk4DmgXzKZ5PMPfvRSnHeQSTuJULpsI7BGHyzZJ/hOn/eRe2eDRnRKVq55TPuYfraFm/q46jqdb/koNnua3h1kBOuB0XufKvBGNneX2M2q7PV7aQZGz27qY2D3oxmvfHTGjiA4XiluVDc7m3oHFNd6Jgi7ppOrct63VnH7GAQ3UXf8+ygHtoHMu6k95XB+hj6uarljtFW6+FDRMoqEO6/UHoRxB69Xo57T84l+xP0mOQHJXn6/u6xiniiGh1UwUGLZ76qzuKUkxPi/a684OVIXueNI+7ZK558cuUECovgEu5IuS7toNz5en0W5C7J2eOnC76rjY559+3WLe7bG+Qhce7pD05lbRwAKfE03+qB+56Tza7Py+3YIC7zP2ZMbeFchuhk+78PvO74W9j3oH8OIeJAxtafheFPiO8YKt8b/+7R6Bah5/x2tB7hRPSQUf7AIlpdze8JYtEmuMU9TazSGf1XDtjvV7pJGO8t6O8CaRyGF56WoM81tx8LFIboHjpTcn3+2QrBLkBPECK6mxwudFNBRQbzxUXz1Gv/Gl6hL5CZPWvhXPnLgj///glATmaVn1zn71L5H27A1QP//0DyUU+CP3W8nwVm/gKYH3dGYXbS/ypCIUYCPAY491Zf/sx6rbptxdPc8We2/I9q4TM0PURE/2+V7UDu8dlS/265rqjC3zjT70Np/xZW/3N1H6+zoXYe+tAEwqaz8ScR/68k32kX9VNdgThp+icpH4kl2/P7H7jz/kvz/6lC+mLQ68XX/sT9uyyt/6J9/8CP3gh178qn38jD7vW1OndO/rzq8T3iwXmQ+syM8T+EP+oK/9/4qLm3r5otT35Y7twp/92M/8ADFL4ECCBQ0eRJhQ4UKGDR0+hBhR4kSKFRleQ0RDx0aOHT121HhN5JZIkiVNnkSZUuXKkoh0aPwYU+bMlzpmscSZU+dOnj1PwqRJkwYin0WNHsWZMWhQpE11Kl36UaNFqlWtXsWaECPQqB6zfgUbVuxYsl+3dpXqVO3Rl1zRLp26Vu7ctTXfgqRBV+9ekVDvbhzKV67fv2UNH0as8OzfqYkdP4Yc2fHivzoEX25pt7JQm5g9f3Z7N/Bn0jw3Ayb/Wroo4bc0bkqGHXsi5cKybd/GnZs2Whp5VQtue3pm3N/Fm2pmbNn48pahu4ZknpP129zVre9+btP6du7dsWJHG51uRufCa94Un37l9Nap1f9m//y9yvhBG3vHnxh819f5/f8H8Kb67JtPrVmQM48j4gpkEMHWlGOQNOFGi3CkAYMKMEOzLpTpPg0/BBG2/eyDsEKjyEvQowVNFI9DoVj0zMWYoGNRRqn6CzHHh0ZcSkcffxyLxxdhPNFB81Yk0jgjn3MvyfHK64pIGz8CskqtplRQOyu35BIiIWlysqgDodyMxjDhI9M+386ca0m4mowQS8C07NLKL2eqM089DbpT0qo12dxJThIB/c3NNwmtK83hSoxTUTz3BLJPFemEtFI7Bd0IUZ5QTLEjTT/DlKNPmwqVUQYxde0aS3OUlEpVV4VVx1ZBGvWp3jpFrdbLDLUPPV19crRDGEONNcRZ5yw2WRCPrenXpHhtjUJnBwt2RjinxQnaDq+dT1APlf2P2Y3AJTfcULFlSVveuEXXqGqlMrXdlFCN9z1iyzX33Szx5Zc7Zs2U1yR10fI1YKMGlopdg0nS1ysTUcWx3+3EpVRiiyWjeGGUSp20YI0DbTjLj1OaUP/hFkMe92J/va1YZZcP+7dejTn+aGSfEFbRY5vFlbZAll++jthXgSY6yHN3JolmBU1GurnTet6Z3odRbrnoyGK2OuuwYm46aapVhLrrn56W+eMJdVYP4qG1hoxitt+2KmOx+/ra1blJpvrPpnFeusJ74W77Z8AHl4jruyme9PCN82baYFQbN05wwvX7e3LLFTv6cKVfgnxvlAGO+vOymav8crKwNj11PllWnO4Ue+s89KdjR/fsRsuMWPUNqc5dd8vlbn3zzlpnmOy5+c71VN59Fwt15lM3nHjk4SWepOkzFfvx25N7fuvSuyec5+pFuh4k2j8ONeyRRd++MvB3r+w92/cBB7768uc8X+OSj/+8fdF6n99svhdAtv1Lb9KrW7PGh6oD2kx7PlseAaniPAm+rX7VU5r6sse4DZYpf/+YkVwFKeK2tYmwaOIbn4USyLnxTU+DC5sF+yB4GhNWhII1PCHrUqjCTi3wcw0c2fWUh7sS4vAiAzSiylC4Q/Il8IVNy9vcHmivCCbRITe0ohIzx8QxJQiIYnPhB3U1xbSFTH5ZvFIV0XgxAzLRa14cneziF8eAyZCKNFzjEc1YtTyW64JMpNkXu5Y3tH3sazOMHwD7KBASLlJiS3RjE49ExyB+Toy1ciEi3edIhGCRk+CKXiRVdav9Bc+OSCPjyeb4yYO4jZX4gqQoOYakuX2tkAtLZXSQyElPvjJWf4zk/Z5oszB2LYbC6dbnFLlIV/oSlN4SZAq7+LRUKS6XlTwsTTLx6EwB7ZGbz6SaKE2iNFOWiZK1M2M0VRNCXzbym79ElTgFVrdhGnJ2Xbv/ZuTU+MpevnNPoZQn+VLUumI2LZ/FURs3m+nPVQFTnLO8pLOk1jXjlXGbzuwnQ+sE0IBe437nNNghKRpOi3LvmwvVKKQc+lB6RvRXBUVaJku6SYWyM6V64mhHaWZNS+Kzp+lJKEaFdlOVbrGjI2mp5k7pwJ+qcjPvzChRq5RTnSZQcSKFIjKB6s2T7lKqUzXqUSWp1bvBdGcVdSpNhcrVr+aJqlWlpktrdVCDCXGrRKzpPtt6KZKKtSTX641SzenTMs20Nnld5V43qkO/vvGed8OqHBkjV6fYlJXuVCxfs9nYv+YNpO2SaVbjR1lS6fWTUc3sshjLWaSWsoOjHSRZ/0mnzCLy0qupVW3/WGs9z96NrgFDHugQalrbshW3kQorZ0tVTbEtdWTJRVNiEfvU44I1nbvt7GPB2FfJ/i+th12rdKvro5X6NX2fxZYLbxmweH63NcvsI2bHa6z2YnckgCUtoX7brmPCVpfEdSRq5+uftzaWY1Jsqs36O1n3Zgeqtx0wgetr37E+9XiD9dwcG0ywrho3wh8qr4E5uN3NxpS7+sRreKn74dzGT51+7e1rGbNeeUG3NBDOo4BZvLITUxiwNGZvgp9L29mKt51D3XGGYknh9OUXUEJeHxGLvGIVi4aPSfZOgVmboFrKdmQLFo2TfRLUIwMYyzwuLIWdlgbmkZZYwcH9FXNPcLxGHZ8ZNyFm7YgNSuSzmjHOm/IwP+ds59u0Uc3Z1TBh49fm5Pz3omU2MqGzbGPslgrI8oKy/nq8TtpO1321lXR1lqxmMIfZmJnG5aZvbOb4WjbUQdvjoefpQRJvZs9sRrFJPQ3eV6PZ1rJ2bKMZbeVbL3rKaoW0rnvta2IDeySlfq+iKxNb/+Z6xqBm5qCXHThVq9msTMW1zVANKlbn2NXbto2WKz3uhbFbXtodbqQvi2R064bS9oV2dk5N65jy29q8FnSg653u1Trbo0+7NLYO5G9ixno5ZA74owdO8G6reb+gdXif3RxdKifbyhMXdcGdfXF0bhx9FfcHocBPq22QlwXP2M13VIQ7M5S3696XYXkS69xyl4vc2eotNmOCLppje3fXd4Evz2F2c/tOGNzG7m5rio70Dstb6Y9Rd9Pdzd+to6vrezl3gHN+dfhB3eCtTTTSvu6smMNl6tSpurLJzm2TG9w81Gaw2hnO6RR7HOBzp9x1z87buutv7/asNseRHXG5Az7whQe207H567MenjRhzzbvsO345kne4CSfVnDRi0nLk1vi81Y550/nc4OvXaI1L3ne453IzZu73KrPyqhbj+Gov2XovBm9WsaOw53jviov9zHssfUzVCpfL5hv9e2NHzdoDh7R026+lJ/e/+zZLx71Vp8+WJCv9XCfXPtDhnzK+874T4e/57q1vusSH2Wzo1/Y3f/7ylPv/u+wfuSu/xUAnCvnexLwEzvp478R8ryzE8BaacBPWcAYQUArKr4EjIjxsy94oz/Zs79rw79oOzq4s0DvEbz4q7AH2ZvSC5i265V/o7oQlLkrG0GLwEDssiuN40Dzq79VM8DMo6Ham8HCicD/S7938zPREjoXFMEqe5AgFD//I8L7a7giRJdQ+bOk6DQmfEEnvIoa3C2mW76MEzcVxLkJ1Dno40IvgcLI86bso7wx3IwrZAk0pLPhS8NWAkM147MO/AskNLUPXEK/A7477MI1lDUWFAiKhHs9KvQ6Mv8UDIj7PgsjxAnKQwqDv+3rQ72bv8szQyOqwElcHTGMP0TskBcLQ0bElgcsrR6MvtMDRTUkQJhTRUQxxEbcRNPrOPZrwle0oVo8tFnUr1jUFWA8kSwUxEDkRVhERT10xCoURtK7RQl0xeJixWTsJF/0tmY8RSncwD9UvF2EQf4AQmssCC/cLWJkk0p8KW18vk4kPjokR4LIukPTQJpLOzjMQU5cv0j0vnjEnEs0QXQ8kyF8N3YswFzkR3D0x4YwxzwzyF9RR12BMyWMwQdzx2Q0NBMUqGgMsnsMooeklmk8wGpcSEaKyHMEyQFcRmcRSDkzRl1EunFcSN1jwJQcFWwDdJaJ/wREDgtHEinJK8JJ+2pJJznJUalHXPy4uOvHnyxHggS2oUySoBxGm6ysizShT7TGhhSx05BDv3nGUYFKW9lH/RNJpjTJEtRIgNRB7vuyo5RGhCTLxjPLpvzKrdxBe3zDjyHFmehK+tg/H5TEucRDtRw8p4w9ttRLwkTK/KNGuRTMs/RI65NKlcxLjdnLGXm4l0zILXxMeTRMi6tLTdHJndlDHoTLxkzKzqTLlbTB0ESU0fyy0tRHx0RNxhTMjDTByTRKqvwU2VxMzoRJB1PN1azMwYPNj+TIGlPMt7y2nuwRmfRHmvw53tSUsByW5VS/0xxJ2rxN3fSry0wYP2wPNwFM/sKdhAsZbEXtnEuthDHqJBTwVJG+HKLi/E1k3EzhHM6BmEfyo72dgU+PkE9NQkGKlLmkq0OrfEX2PCq10cTyxMS7yMyyTM/UzM9uisyz805N+cxpKcqqJEk0ki/VVNCOEr3f0zfyHFDzjAqL/NCZzNCjckvHcU1CucFvBEEttM/OHFF5+s++QVHgyzBuNM2l3E4Kzc/9/ELrhJEanTxvtFH8xFGerNAdZanza9IUJSb3PAo7vEp4dFFRPLvQwkEnRc58nM3mjFJxrFALpU9gQ6vKS05M09JilFDba9HofFEeVVIW6dHkIc05XY2/nFDbXM8NZS3QmxbfNJg+fQlF8TxIIgVMIx1OKg2mPZ0aK8VLD1TRFnRODFlTNhUNU9ytCZG2JvxR3nDUueBSEcJKjOzQjoqsB/W9Uw2PCOXOSC0M6IxH6WQySzWREqXV83w7KT3GivxUJG2sb7tSCDUx1lRVzYxLSDVLXs3ApwEjQD0TYCXQFVVKhTzSV63SC0U8M12Y4+S7Wx1U4BTR6itM51pLokvBOC3DOj3QO91VcBUlZX3XaPNPX10PaK3NmFxTakXJ8uNDqRNP3nA09UxXKP1WMD20Uqk17Ou950jVZ7VXT1xVUCRYztJXs+E9WbXYYeWPbh3EY8VXN3KtfpNXZxT11zM1ujTl1oFl1yhs01TD1jDR1m3tEZN12ElN2R0qHxn7iwAtECZ9UmPtVJow0JLsWLFiVBYqVYRlWSE9V2m1U3RlSmQNqPS52JeaURrN2TED2CIl1GkN2hZy127E0oNdl4XF2nrV2p/k2nBtWa4b26ikGqOdF0HN2rh12rRFIGsl2vEMVreD27P9W28FWojdrajFnql9C769I6u92pgtVjWdUsHlqRjVNGeVyLBFio2VoFblxbqtVMJtrpDNUtDF2LkFUdIlRErtXNbt17xNEs+tT2INTqXdXMf1WD0zUSYZXpmj3MUZy4DN0cekXd+qG+fF3ev3jF6QodfY9Vu6zdPBnd7cFd10xE6YPdmlxRNdJcfm7TLV3beXlVHXfV3AzSLTTdDsVZz7gd67Ta/u3dKyxVV11VFDdaPlOl4BNdwGJVOe9VTxhZdPBdVMbM03HTbvQhpGrafslNT75N11RUuH1F0YcmC3Jd4NK1kE7hiUxd8H/rj6vdmO7M/EvdHMXVHyzUr/TSEAFiz7DT3gvVz+VV7ffVj1lafyYa6JheBmTWHw/VkLDuHfNVi42mAY+qH0JdekTWIX5gwFNt+2zBtRVeEillMbfkT9bdgL7t8MXtCvmbmKNV7JlQ/D0mGzDV8l5mImoieC+l7gUvlUKfZJnyUYGHbVOmYiIA6+aZHgQDZKHM7h5XXjIx5jHwakOa7dOFa4WCVZuGja95XdO3xa4pkm2zXht8W7ArZV96VAL8XTEv5c2zmcqA1ikU1jNlbkHZ7ixnUxsYKocmJkI8TUUFZcua3gRYZkOp4QLa4rSS5Tir0r2hNhV6FZP9beJgbZ7WWRtTVgptXj87Ri+c1U9EVhB0XjQ6ncXoblmYVjYxYlJwpgr+TkffVkVxbjcK5iEr7l+aUnQr5faP7VO97UROTjLkVQjuVcmzNn4kmfC4tnI27nROZhWbZcDApogSZmdf7gb2ZcJH7hZWZftl0l+/FXdPb/YgreZevN2Bg25MP5qAmG6IgmYm4+ZjSl4gMeZwYWWiei52385fQqk1UGYXFu6Q5Bz63FZppGZelx5nZ56El+52T2CniuaQ+OYjVG6W62j3P+1+q15OsN3JFumhiS6RRyoZkWzY0GtORFaM3t4aXm4BXCaZLu4NZdYYlu4/195e7E6jFdWVvuaJb0Mna25mrWaYVW6bJCa6+u54u+SWk2apfe6Rnpaew15a9+HcEW5OcV4gHWJmSW2Z61aMYQ5i0+EqmuEeFNaXidT1E+Q6v+UsKGyBWSWq4uasts7cPmaRYNzLL+68NFzOoBbajmDI4mbY017VIuaOXslDMm6dyeAsK7/2ZOzO3dWMbgJWZq5HbitY5Nba7s3n7H377XxiZK1V7tGTbu546KS4XdqqZq4NbsyZ4QyD7M2gZvofDsOezn0iXl7EZtGuVu4q7h+nZs6PboFl7uin5pqsViXMHv4h5qdFHlzy7v0g7pPg7uWtnk13lvGIFc9QYUiRVvcB7rvm7uu7RjXOnuHWoywLbn/F1w327w0/1nr7xvkzYmF9rsVDxwPObUy0Zsv46Wk57x4o3BbYZp/3nrMN7rzCZnjANxUREn/PLxdebtiY7WXCVy0cZlEC/wR17o9QFrOmXYxX1j2m5bDiUlArfwKefvqczl6lZuisbsAJ9Vlz3yKrdyTQN1amH/ld4t52UnZ96ffo+Pop6Aol8SL/Pk7vL/XnMvZ9bX426RgVVSPRxCkpL4JiD49ee5dhI+73M/jzEES2cBRtV9ZlV6w/FDv0lLT5yOglwXN/JAF3REhuuE7vDbBpQIp/IxH2bpVrAo0tsU/3RIx+QVX7VEBwlaX0EznvCcHpRcTyS+Pmo273FEkfVZ9ysg/tobLnG1UCZlv/FX/3EnmQVOOfI5+U5iT+XvZpCoJQqkRhalhvXrBHa8KHZAAay01u1FCRMJPncbZ1pPn3T9BhVSnxFUb51TF/ZszfKmsHd9l2/sLl895wuXCPNvb4t3h3czbh1yjxDjQXeOuGZmJh1/Hudpiffe9JbnvF5SXn8fSZ/EK14Lh2/3S09WcVdrkv9X8GTH90eJct6I8RgJDogvdeUy44EPkxEfyJ6q+QRW922Pjm7feZ5XEIBX27ru5BMdelor+pioZPNm799Q+odn+poA+WAU+fm19Wg2p4w/I19e93Vqi5bnaR/r7Di/i6/XCfWqeio5egHXepbvej+Re7Af++O+chYppsQ2+ptv8xtjebZflL4nlKS6qh3X6yFX82xH+xy/sbXf+38HeroO/PZ2b1r8mnt/8kHXdlHfld5QfBJhfL+nbvSWerEte0LHEISfXRkm29S3ZlkDZLtuaiL5MdrvHpSvfUrX8swvxdUH/SNpZjm/cA6afGo2/DVueNwXClrKwJ8nnkyvTmotuvpd1/V9N+udoP7Ftzt6mnagBmU2AazFriGUCvXnyPmc8Hj4R4TzL+e3B+Yz/5964RB9IQcIHQIHEtRBQ8eshAoXMmzo8CHEiBInUqxo8SLGjBo3crR4DdHBgiJHCrxm8iTKlCpXppwVkiTMmDIF0jiIiCXOnDp38uzp8yfQkwZnyqQR9CjSpEhBEo2p9CnUlEObijzY8SrWrFq3Jvz4kurAWde4ki1r9izatFu9giVoNOpKpm3nFrQJ9y7evEfl0qV5Uy/gwCin0qXxVzDilHwL31Tr+DFksYupWo1s+TLmzJbZzj0oeHLfpjUPJy5tGmnN0ENPs07qUrWO1qW/djY8VjPu3BE509Xt+zfw4JJpgxVMGHZR27KXM5dKvK3y5tLjPhdNejrc432Fc//HzBts5e7ix5Pv+J1y7MDakVe1iv29adB04dNfT5n+XfngEd4u7z/reWD9NyCBBQZIlXHVsZcafg2qp6B1DkqnH1GeSfiUfeA1ViCHFx04U3gdijgibh8WlR5gFKrG4IUtQpVhWy4uByOI18nok4oRkrhjQybOJBaPQQpplo8yIQZhbYaJdSOTP+UIIopNzgablEHRWKFtQ+5YJEkhavklmBhxOZKFDy5o05JVqonTlTWuiVibMEX3pk5PVrhhmASOSVKeffoJ0Z4jIWZnTKnZSCedcRYaJaJ4IVlUozwpWhSef44XqFsIWbqpn5gOVKaZSepwaKRqEioTqaUu9ahIkaridCqlQHLKnacEzXrrl7UOlJhLrH5ql6uRTtplqsEClVpfcxo7mK/JISIrrr7p6mW01XI4LaOhFjpascveOCyZ2XoLFKyC/46rErhdumdtbroKBC278Zbnrrh6zWLQczUBe+6b5ZLZLb9sNlsVwK76K+eo8Mr7GLYLO0wetqwhgq++hgbc6MBOXUxuxnVtzCx7NK37sGP0knxycO6+1RoiLbec5sdqplsVzDHrNLNfNpuEc5cJ94cyWQ0DPbRm9Op89FMH11WwzkrjW/PGTqvrM9FrOV011pFNuzLSXePYcVX1er0z2DSJHbDUCD9rUtYcCd023EQ6PTbdOt1bdkFM64y3QHovy/O2o679c9wSmUx44YlvpHLdja8EeM6Og5zs2RtDLqehgyOueFcHU8s56B55XrnkTfNtduknvRaaskffHTLmfa4/2xXUqed0dei5e6g017Z3nXbkqfMM6tjIwo75Sy4rvzzzzTv/PPTRSz899dWD/bnu2fc4t+9jX95646sn6ze/IJ2ebMXpq78+++27/z788cs/v76haX8/oJ733r3N35P+O99oUDsAno9yZvtUphCowAMy8DhfeWACGwjBBTowghWkIOs0hb8NKsRo/Dsa8PrmO/ExJnXmOx4KU6jCFaZQYRzMHuM+aLMQgq9xUhP/oO1OyMId8rCHPhzKC18YMRl+LIQlGeH5+He5HzKxiT4MIgdjSMSL+Y9/N+SfWJboxC1yETnYgyLoPDhFfi2xhnUjYV+IqMUusrGNVAEj/rY2RjIW0Ix1A9z+uqdDN/KxjyH7IhwTJ8Y5GouG/wMgcua4Rz8yspFtcWEgBck7Qi6LhjjsHh7JR7fXObKTngxXJGE4Okoay3gr0mTMbnhIE5ryk650ZCh1N0hSIoqTsLHjHQOIyvDh65W+7CMgY5m1IdKylmVcJdJUWcyTTKyAv3ym/YQZRu4t801lvCQmdVlNti0Smt7koVGkyTliblNKRsQl3ZRZTm628pvuRCEkJcVZtVmu00Xn3GXMMllPZjbTme/857s2J8+hkXOfFzLiEa0YQGT/UrKfAH1oBis1UKLR06D4OSdDXadPiyqGYhD9aFskOlGUFZSj8EHoqGQIPJOypJ/tBClMRba2kRKUmix9D0LRucnT5fGm/KTYS2MK0NHEk6bsKqlPl9NN1uEznwtN6k5aJjL1EWaCDAwJVg/4EqtWVatelWAEszoVsV7wqg08E3+MSrKKQvU0zfxjRpHG07b6RDIuy1RW8zqUg6Smr3zl61gDC9i/9tKvezWbXgdLWMMC9rCHVaxj4VpUtd4KqXQtjRaJl81EXraz9AqXSCmLKyl6lleZ5Y9K51ray6LUL6KNF1tXexdb3rKntvNiU2VLyNbia6avHa3+dBsY2t4yV7dFDKBthWvRNf4qrb+dVWyVixTisk6ndUubdaW7TeYicLLP1RJptYshf2aXbpcTb1t5O5TQfjdXo0SvUqibwTFi17jwJeJSvagkgbY3SOG970/WqFklPvQVwEl9KwqJ2t88RdfALAlqYVCrRp7a18Ey5K7ZvLvgawXXwjzJL+UGmEOextXDlMQwEPm7YQ7jzcR18idNRHzb81XYxQpVoV1W7N9J2pg6xxuNIinc4wND+JQ65pFlXdza8taNxEOGKoJ/vN8ji+i/Nl5yjS0n5CcnVb61dS6V9WTTHnOXyel0Mpeh6uVbgjnM/pHjk8ucZS3fMs2shTEC2etm4TT4vswF8m4LaOc747m3Gt5ziXis5CKXMNBsHnRnoww7BSNaPEmG75LNnMviQjrSKB5ZpVM2ZgPzVtNnfnSnPYvigIZa1Ncr8WXLbOqxhXDO86meonpz3GppjRq9a2YqLSE361tXE8TF3TWvX+1gY6PP1nSuM7FXy+xmHxrZcmsxgHPt7IsBb9jRruavM1hta3Pl0rLFMKBJucRv6zbcIVYxucvSZ08XOt0n5mly2Z3eQq8X3vG2mrLFO+0Ib5vb5/O2vss58Nr49t9omfe+cZzSYh4c1gnf58I7MzuHP/y9yv30xINdwIJffI7urk2bOQ7w0Cg349Cx+HUPTvKSm3zVKVc5Vsyd1FUPOMhehDnNDZrrlOJ85YXRLc9nTsWDBx3T/DbIxot+FYhb1OXgQfipOd109FqdMg2Xukbg3FmeY53WFe3fOoBBPm6wM4Tq6+w6ZcrutV7VFu0GVru/2b69suXboDZ3z3ZlbndS81vXeq+Izt/O6BVJeJndBvrgWQp3EGXp8BSx8nKfjjqF1zHyFp58jdYudbeTEvRYUvrG6K51zxv45NABteUdIvaq27zf66wi6y3s+t7kHeykp+/iGY/xzufexEPX8+Ex7/jar6aeNER98bdp+kIhn+2Jn2MvWWhv6QefKNG/cveh8/XYK7+h4acc9D+G+++7ePdxv7nef59D5jd/n1pMP/u36f5H9v7fsxe55slU1dUR/uVfOYFc9XGc/DlO9u3QvjhfHUH+ngFG2vmJBtFZXvkpVAB2l0Wh0btN4JNNn7qMX9Fdn+RImvbJneTsH7GAoJ3hXfz1mh7R3+ZxVBkVoAvWEwu+Uf+FmgnSWgM6oAqWjiHlIKQdXw8i2gKmUhA6YMgN4II0nhFymQiCVhK62Q8eTRM64U3d0xR2WhX+i+hR2RKWzxZq3xNylDMN4ReuFgwqoMc5jkMxUc/p4DG14a3tYFOM4YqVYbDMwhz+0AOa1DHJGB4OGQJe4YZlobcA4hmmoAR+0DUd4reFYV1cILn5obDUTxMNokl5ISVGmyW6xZRZGyOqSiDSYR0K3RriYCjuXOHB355poqk8IjiloeStYST9vqJ46SFR8OFvnWKiVOCksaEeEWO48OLFJeKuZWCpOCIyolVnrWHfKeOgjWLeKKJo0eJBpaITeeJN+eLSWGPJYaNMAaNR/Z+qQGM0RqErzl1mvSM50hW6lSIWyiCieBQbscjY6eI8Bp04Tg06TpQzSoktCiI4wqJk/WPTMWOYCaOD0OCJyKP36KIhMiSxmWO/PaSiNYpEqo1snZMxYmS2tSP1cSS2NYp6oQdFZt2CtCRJ9mMKEZU2SpM6rskGbgtMmt2k7WRM0lVAkgnstRc3NsdHkqLmSBt57eJP2phD9ldBuggX0aRw5RRTNiX4sVACjhREwkdOIuVFQtlShvUlVuqbRtIkUXbkmqxkeySlblklWZalWdZj1AUjPjIJW06VW74leVWjXNJcPcoiV3YYneQlmnAdjI3kX5JZLG6lMBUlcxReQvLlj/nkYlLmCjlmKEVli/zZZGLmH1nmZfJlvSnJNsZhv1DjVUJgMYrmaL7lp5GgPEFmZH7ZXgpcYrrma7ZbYA6k9nTlSfHdZ0oXSq3ibrLeGxLkXTaJ++mLbo7Yj63mcYJhY9akKAVcpJycocQlaEYhd04n2p2lPdrkckrJ3VRH5vRYcUoheBogCp6JbAYScDaIS1WMCCFiYrJnexpgUIKSdY5Tea7lxMgOl/UnB6vu5xcm52aiJoKqhIFmWIO2IRI+ZoCC54OmWIRKqEnKSV3C0XxipWdmKCW+p37F5wbR5j9io3GKKAj25n8OE4M2qIpKJ4sm3IVyoIeqpYxuaF0oZo0m3IRCEYoqY6b9qDWKp4nmzk2Cp6wZKTmSaG116P0MKSXeKOA5qTLeKIRGkY5OZ5npJ5ZWqYJeZ4QhqDleaZg+aXXGUZeOZqmBaZq+okZCHZum5HG+6XeoxqkRQumxvai8LKlcaima6mmKuqgsVShJohuNEipyxqJvwlabYuVZLiqjsl6QAih2LuaZ+mil5l6ujWfccCY5xman/iWSTpOdSipdlqqmjimMXo9fEimPtiWrXqaWhoWfcgqVRt+nxWqtpuiawo2oHuKtDuqvmuqsEkyoxug8zqmxHiuyFl6SOsyuRp6zwim0lmWxCia1MisvFiunZmsOuupaIeoUOmu4t4rruAYr0Hxo8ZHdc6pr032qZlaWuYIgn6KavO6otD6qe2WqnCZr2OTpvjZlvqIPt0ZLtS6j5q1owe6mzfmrkLhreApsj8brw0beU/7pvfJqw6Zrxo7o01UexwLsuf4dpYasrPZrro7Iwt7aQeqryhrpwRbGUAKXyeLr34HszH5rxLYsiyXLFJ5nCmJsz37fpeIsy+VgzTIewR7tdCYtdBHmBMYsmz0t1EatxZ4j0L5Zx9LcnP6K0bFmrXuSa58Mazkyn8OSrZH+7NTmrOeF7YGybalubKdEaniqLc/S7U+yZb267NdGm9Wy2djy7Z5uraF1LZ9R7eA17dUabrY67stJbHe87H1JbnUVLuS2odnuGN9pLOKGjeZuLuey67+Wad7mJD+Srrz6reLqBtqmGeZGFOtm7Km+btEELn5+5drWLqvOrgVSLuwy7rcRbQ9tn+8+rNtOrO56mNxeItYmL6PaLeB+LrsBb7OuSW/Wuq7nom5GfuSzam/I3u6WNC/XDS58ii/dYq+zIJm3qif6eqf6Gq6hVpn5flzojuD8bi71/gfFdpbxCmLK7m+aSq3/3m9pxa87EnDtOquUzsv7pl3+Tg0DJy/76qTwpoXl3t4E98zoVvBl1q/Xwu35drBQfjAIj2b/0goCS54CwxUKp7Cbat7fekcEh+QLL7AM7y/5XkoL218Ol+gOV/AFY860JhoJe5Y3IiS2tQ6x9Irw4lpvVQaxDjtxCq9wu/wwKbFjFw2nFauvAQ8vrEqbPm4R8n5xCjswC6cqlFExWsUwGotoEXNoBrsN3gqdyOyjF8dxBUMxEntvF7oxDPMxIZONxNVxRsQufZVxF+NiIaNxGG+GFsvhEpvx3j7y0fZwZgAqLbkUH1ElJofyqf5xGumfJ39y+IZyIXeuBt+xSglygqWyKhfytiKy4dyw7WQRJwJT784yH0dyx0kxrlWyHg+8sC9bcOiaptZM8riw41e+3zFH86vQpS3vnc3i1y77UWpErzSjsR+fxQYPYyeBcjeXM7o4Ku4uhCKr3zPH3W2aMzx/Fkiqxf8WUjtTns/Esz6rhCbLGzOv4z0HDhzv88PO8Qm3chLzpBtZDEE3dFywsh2zseOY8LZcskODMESHHS7LVRcf5kV/dEuZLoD8c6Tk5dQMNEhDrRqX20abjiomVErHdEizrFaEsznx7h7LdEoL6s1qdEJ7TQAiC0qp6zTf1vKL2jRzSmZOEzVTAzPitbTOeKYjMzVVvwriouXikHRJ19EZV7VXW3VpPvBT/7TXDM92fjVa94RB+6dPCy3/ECNDp7Vc98Ty7o5En2Dw1U/LzDVf+wQWPwQnM6CC6PVQ9zUBr7To3HXpAKJ92uc7GzZkgzWOHXHnCPMHAeKA9g03RzZfZ/RwADJnh3aXZfQ6i7ZpO9pMYiJga/Vpt7YNXTWoqjPxum42bStev+aPYte2btMST8Nfae82cK9gXXcQVAe3cfuO1P72cS+31zjwzyA1c0f3VtP0Z9eGdF/3IpdmWkE3dne3zGjekriyd493WVdncZM3ekfNVQtObqe3e5tOQEPJe8934xxlU9A3fsNjfCNMfmH3N9LYd6v4t4Af135f4oAfuHoXeEEgOIMHDIBnSoNHeCM+OEFIuIUbC4X38oVveIuYtMZwOIgXJkUbeIiX+JuMuFuYuIpXya1++Iq/uIxIZE3AOI3LyPNWeI3nuITcuEHoU7iPR2RQG/OPD7nd1J6vEjmSA0btJTmTN4d4NjmUy8acRjmVs0aZVTmWm9ZSZjmXJ8ikdTmY6wVChTmZ58eGzniZp3nSnJeat/l04ZGbx/lR4IyGScu5nLO2nUN519V5nsc53PU5oPPE7vF5oLe5+xU6ot8OqxB6oqv5wjU6pPMzjTB6pKf5lVQ6pgsFegp5pv84hXR6p3cTpYM6mYszOql3OnGdOqqP1ZGrup+/hKuDuvm0eqy7ufnUOqjfC67n+q73uq//OrAHu7APO7EXu7EfJjuyJ7uyLzuzN7uzPzu0R7u0Tzu1V7u1Xzu2Z7u2bzu3d7u3fzu4C4e7uI87uZc75AYEADs=

Если в начало текста добавить указание что это картинка Base64:

data:image/jpeg;charset=utf-8;base64,

получаем картинку, которую можно вставить в <img src = "Здесь будет Base64 состоящий из data:image/jpeg;charset=utf-8;base64, и самого Base64">

Пробуем вставить это просто в строку запроса браузера (обратите внимание на строку запроса)

-2

Обратите внимание, я просто вставил в строку base64 кодированную строку картинки и увидел свою картинку.

Теперь Phyton. Тут тоже всё просто Картинку я получаю из opencv с камеры. То есть получаем картинку с камеры и передаем на сервер куда угодно, можно в базу данных:

cap = cv2.VideoCapture(0)
ret, cv_img = cap.read()
if ret:
self.change_pixmap_signal.emit(cv_img)
rgb_image2 = cv_img[120:370, 180:450]
buff = BytesIO()
im_pil = Image.fromarray(rgb_image2)
im_pil.save(buff, format="JPEG")
img_str = base64.b64encode(buff.getvalue())
response = requests.post(url, json={"img": img_str})

Здесь мы сделали следующее:

  • получили картинку с камеры;
  • вырезали нужный нам кусочек;
  • сконвертировали его в массив через буфер;
  • закодировали в base64
  • отправили на сервер в JSON через POST запрос картинку из Python

Вот и всё. Если у Вас остались вопросы пишите, буду стараться ответить