Quill로 입력 한 이미지를 js로 얻는 방법

결론



다음과 같이 취득한 DELTA 형식의 데이터를 JSON으로 취급하여 화상 데이터 부분을 취득한다.

개념 코드.js
var quill = new Quill();
var contents = quill.getContents();//エディタに入力されている全内容の取得 DELTA形式

var img = new Image();
img.src = contents["ops"]["insert"]["image"] //DELTA形式はJSONと同様に扱えばいい

Quill은?



Ctrl+V에 의한 이미지 붙여넣기에 대응한 WYSIWIG 텍스트 에디터의 인터페이스입니다.
간단한 html+js로 다음과 같은 텍스트 편집기 UI를 웹 페이지에 포함할 수 있습니다.


예를 들어 다음 HTML을 만들고 브라우저에서 열 수 있습니다. 간단! !

입력 데이터 취득 및 DELTA 형식



입력 데이터는 getContents() 에 의해 델타 형식으로 취득을 합니다.

DELTA 형식의 데이터는 JSON의 엄격한 하위 집합과 기재가 있습니다.


샘플 코드



submit 버튼을 누르면 입력된 이미지를 페이지 상단에 표시하는 샘플 페이지를 만들었습니다.


quill.html
<html>
<header>
    <link href="https://cdn.quilljs.com/1.3.6/quill.snow.css" rel="stylesheet">
</header>
<body>
<div id="editor">
    <p>Hello Quill!</p>
    <div id="imageput"></div>
</div>
<form>
    <input type="button" onclick="click_action();" value="submit" />
</form>
<div id="edit"></div>
<script src="https://cdn.quilljs.com/1.3.6/quill.js"></script>
<script>
  var quill = new Quill('#edit', {
    theme: 'snow'
  });

//=====================================================
//以下より拝借
//https://qiita.com/yasumodev/items/e1708f01ff87692185cd
// Base64形式の文字列 → <img>要素に変換
//   base64img: Base64形式の文字列
//   callback : 変換後のコールバック。引数は<img>要素
//=====================================================
function Base64ToImage(base64img, callback) {
    var img = new Image();
    img.onload = function() {
        callback(img);
    };
    img.src = base64img;
}

function click_action(){
    var content = quill.getContents();
    console.log(content);
    content["ops"].forEach((c) => {
        console.log(c);
        if('insert' in c){
            if(typeof(c["insert"]) === "string"){
            }
            else if('image' in c['insert']){
                console.log("GET IMAGE");
                Base64ToImage(c["insert"]["image"], function(img) {
                // <img>要素としてDOMに追加
                document.getElementById('imageput').appendChild(img);
                // <img>要素にすることで幅・高さがわかります
                var log = "w=" + img.width + " h=" + img.height;
                document.getElementById('log').value = log;
                });
            }
    }
    });
}
</script>
</body>



</html>

출처



감사! !
- [JavaScript] 이미지 변환 : 요소 ⇔ Base64 (상호 변환)
- Quill 공식 getContents
- DELTA 형식 정보
- GitHub에서 스타가 많은 WYSIWYG 에디터(2019년 11월)

좋은 웹페이지 즐겨찾기