Поэтому в настоящее время я нашел этот плагин для подкачки фотографий под названием cropit . Демо здесь . Так что я хочу сделать, это захватить обрезанную фотографию и загрузить имя фотографии в базу данных mysql и сохранить ее в каталоге с помощью php.
Пока у меня это:
HTML:
<form method="POST"> <div class="image-editor"> <div class="cropit-image-preview-container"> <div class="cropit-image-preview"></div> </div> <div class="image-size-label"> Resize image </div> <input type="range" class="cropit-image-zoom-input"> <input type="hidden" name="image-data" class="hidden-image-data" /> <button type="submit">Submit</button> </div> </form>
$('form').submit(function() { // Move cropped image data to hidden input var imageData = $('.image-editor').cropit('export'); $('.hidden-image-data').val(imageData); // Print HTTP request params var formValue = $(this).serialize(); $('#result-data').text(formValue); // Prevent the form from actually submitting return false; });
,$('form').submit(function() { // Move cropped image data to hidden input var imageData = $('.image-editor').cropit('export'); $('.hidden-image-data').val(imageData); // Print HTTP request params var formValue = $(this).serialize(); $('#result-data').text(formValue); // Prevent the form from actually submitting return false; });
Все, что мне нужно, – это настроить php-код, потому что, когда я обрезаю фотографию и выбираю submit, jquery возвращает код сериализации, и появляется весь этот код, который я обычно не знаю. Вот несколько символов сериализованного кода jquery возвращает:
image-data=data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhE...
1. Сохранение кодированного изображения base64
<?php //save your data into a variable - last part is the base64 encoded image $encoded = "data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhE"; //decode the url, because we want to use decoded characters to use explode $decoded = urldecode($encoded); //explode at ',' - the last part should be the encoded image now $exp = explode(',', $decoded); //we just get the last element with array_pop $base64 = array_pop($exp); //decode the image and finally save it $data = base64_decode($base64); $file = 'data.png'; //make sure you are the owner and have the rights to write content file_put_contents($file, $data);
2. Получение имени файла с кодировкой base64
$encoded = "data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhE"; $decoded = urldecode($encoded); $exp = explode(';', $decoded); $exp = explode(':', $exp[0]); $image = array_pop($exp); echo ($image);
Я получил ответ Hosch Nok на работу, не расшифровав кодированные данные. Не звоните:
$decoded = urldecode($encoded);
Но работая напрямую с переменной $encoded
.