Hei c в jpg с использованием libheif - PullRequest
1 голос
/ 14 апреля 2020

Я пытаюсь конвертировать .HEI C изображение в .JPG с помощью libheif.

libheif конвертирует изображение только в окне браузера на стороне клиента. Поэтому, чтобы сохранить изображение, я преобразовал изображение в base64, а затем выполнил ajax, чтобы сохранить изображение с помощью file_put_contents.

 this.canvas.toBlob(function(blob) {

        var extension = FILE_EXTENSIONS[blob.type] || ".bin";
        var basename = this.filename.replace(/\.[^/.]+$/, "");
        if (navigator.msSaveOrOpenBlob) {
            navigator.msSaveOrOpenBlob(blob, basename + extension);
            return;
        }


        var readers = new FileReader();
        var base64image;
        readers.readAsDataURL(blob);
        readers.onload = function () {

          var base64image = readers.result;  // data <-- in this var you have the file data in Base64 format
         // console.log(base64image);

          // call ajax
            var formData = new FormData();
            formData.append('filename', basename);
            formData.append('avatar', readers.result);

              $.ajax('upload.php', {
                method: "POST",
                data: formData,
                processData: false,
                contentType: false,
                success: function (response) {
                    console.log(response);
                },
                error: function () {
                }
              });

        };

        return;

       // this.downloads.appendChild(dlink);
       // dlink.click();
       // URL.revokeObjectURL(url);
    }.bind(this), format);

Когда я конвертирую одно изображение, оно работает нормально. Но если я попытаюсь преобразовать в l oop, это не сработает.

Перед завершением js преобразования мой php l oop запустится (я думаю, что это проблема) Итак, я попытался php function sleep () и js set timeout (), но, к сожалению, никто не работал.

(function() {
    var demo = new HeifDemo(libheif);
    <?php $img_array = array('demo/1.heic', 'demo/2.heic', 'demo/3.heic');

    foreach ($img_array as $img) : ?>
    function saveImage(subject, callback) {
      demo.loadUrl(subject);
            callback();
    }

    saveImage('<?php echo $img; ?>', function() {
        // demo.saveImage();
          setTimeout( function(){
                demo.saveImage();  
          }, 2500 );
    });


    //});
    <?php sleep(4);  endforeach; ?>  }).call();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...