Декодирование (сохранение) base64 (image/jpeg) в картинку

roman149

Новичок
Всем привет!
На сайте для загрузки картинок пользователями прикручен cropit http://scottcheng.github.io/cropit/
Собственно так вызывается:
HTML:
<script>
    $(function() {
        $('.image-editor').cropit();
        $('form').submit(function() {
          var imageData = $('.image-editor').cropit('export',{
                type: 'image/jpeg',
                quality: .6
            });
          $('.image-logo').val(imageData);
        });
    });
</script>
<label for="ticket-photo">Изображение</label>
<div class="image-editor">
    <input type="file" class="cropit-image-input">
    <div class="cropit-preview"></div>
    <input type="range" class="cropit-image-zoom-input">
    <input type="hidden" name="image-logo-project" class="image-logo"/>
</div>
Протестировал из обычного html файла все работает. Возникла одна загвостка cropit передает картинку в base64 в скрытый input.
Раньше картинку загружал и записывал в бд плагин:
PHP:
<?php
if ($modx->event->name == 'OnDocFormSave') {
      if($mode == 'new'){
        if (!empty($_FILES)) {
            $id = $resource->get('id');
            $folder = 'images/logo'; // имя папки куда грузить, должна быть создана (в корне сайта)
            $path = MODX_BASE_PATH.'/'.$folder.'/'; // Путь от корня до нужного места
            $tv_name = 'image-logo-project'; // имя тв
          
            // все значения файла
            $nameFile = $_FILES['image-logo-project']['name'];
            $typeFile = $_FILES['image-logo-project']['type'];
            $tmpNameFile = $_FILES['image-logo-project']['tmp_name'];
            $sizeFile = $_FILES['image-logo-project']['size'];
          
            $limit_size = 3*1024*1024; // 3 Mb - максимальный размер загружаемого файла
            $file_types = array("jpeg", "jpg", "png"); // доступные расширения для загрузки

            $extensionFile = pathinfo($nameFile, PATHINFO_EXTENSION);
            $NewNameFile = 'id_'.$id.'_'.date("m_d_y").'.'.$extensionFile;  // наше новое имя файла
          
            if(is_uploaded_file($tmpNameFile)) // проверяем зашёл ли файл
            {
                if($limit_size > $sizeFile)
                { // Проверка на размер
                    if(in_array($extensionFile, $file_types)){ // проверка на тип
                         move_uploaded_file($tmpNameFile, $path.$NewNameFile); // загрузка файла
                         $resource->setTVValue($tv_name, $folder.'/'.$NewNameFile); // запись в ТВ
                    }
                }
            }
        }
    }
}
Нашел способы декодирования картинки из base64 для cropit
https://toster.ru/q/217817
http://codetips.pro/2016/02/01/image-upload-and-crop-with-cropit-ajax-and-php/
Попробовал переделать имеющийся плагин, поскольку не знаком с php мало что получилось:
PHP:
<?php
if ($modx->event->name == 'OnDocFormSave') {
      if($mode == 'new'){
        if (!empty($_POST)) {
            $id = $resource->get('id');
            $folder = 'images/logo'; // имя папки куда грузить, должна быть создана (в корне сайта)
            $path = MODX_BASE_PATH.'/'.$folder.'/'; // Путь от корня до нужного места
            $tv_name = 'image-logo-project'; // имя тв
          
            $NewNameFile = 'id_'.$id.'_'.date("m_d_y"); // новое имя файла

            $img = str_replace('data:image/jpeg;base64,', '', $tv_name);
            $img = str_replace(' ', '+', $img);
            $imgnew = file_put_contents($folder.'/'.$NewNameFile.'.jpg', base64_decode($img));

            $resource->setTVValue($tv_name, $folder.'/'.$NewNameFile.'.jpg'); // запись в tv
        }
    }
}
В бд записывается ссылка на картинку, а вот картинку сохранить не получается. Может кто помочь?
Заранее спасибо!
 
Последнее редактирование:
Сверху