일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- dynamodb
- AWS
- domtoimage
- xlsx
- API Gateway
- react-admin
- axios
- react-xml-parser
- TypeScript
- window.postMessage
- zerocho
- gitignore
- 프로그래머스
- yml
- node
- electron
- react-hook-form
- signIn
- jimp
- react
- icrawler
- react-sortable-hoc
- cognito
- readableStream
- electron-builder
- JavaScript
- Route53
- 가상 DOM
- react DOM
- timeinput
Archives
- Today
- Total
꾸준히 공부하는 개발자
[JS] Canvas image edit from s3 본문
S3의 이미지를 가져와 blob 으로 변경 후 canvas에 그려야 작동한다.
또한 s3의 이미지를 encoding한 값을 넣으면 cors 문제로 받아와 지지 않는다고 에러가 났다.
그리고 마지막은 다시 s3로 편집한 이미지를 올리는 장면이다.
이러한 순서로 진행된다
s3 -> canvas -> s3
const imageEdit = async bool => {
axios.get(decodeURIComponent(file.src), {responseType: 'blob'}).then( async blob => {
const objectURL = URL.createObjectURL(blob.data);
const res = await dataProvider('IMAGE', 'translations', {imagePath: file.path, from: 'zh'})
const image = await loadImage(objectURL)
const canvas = document.createElement("canvas");
canvas.width = image.width
canvas.height = image.height
let ctx = canvas.getContext('2d')
ctx.drawImage(image, 0, 0, image.width, image.height);
for (let i = 0; i < res.data.length; i++) {
const v = res.data[i].location;
ctx.fillStyle = 'white';
ctx.fillRect(v.x0 - 5, v.y0 + 1, (image.width + (image.width * 0.03)) - (image.width - ((v.x1 - v.x0) + v.x0)) - v.x0, ((v.y1 - v.y0) + ((v.y1 - v.y0) * 0.2)) - 4);
ctx.stroke();
}
if (bool === true) {
for (let j = 0; j < res.data.length; j++) {
const v = res.data[j].word;
ctx.font = 'bold 16px Arial'
ctx.fillStyle = "#000000";
ctx.fillText(v.text, v.loc.x, v.loc.y + 18)
}
}
const {data: {url, path}} = await dataProvider('UPLOAD', 'files', {
data: {
type: 'images',
category: 'products',
mimeType: 'image/jpg'
}
})
canvas.toBlob(async blob => {
await axios.put(url, blob, {headers: {'Content-Type': 'image/jpg'}})
form.form.change(form.type, [...form.formData[form.type], {src: convertImagePath(path), path: path}])
}, 'image/jpg')
})
}
'Javascript' 카테고리의 다른 글
[JS] 반복적인 문자 치환 (fromCharCode) (0) | 2020.02.27 |
---|---|
[JS] 특정 문자열 세기 (match) (0) | 2020.02.27 |
[JS] window.postMessage (1) | 2020.02.07 |
[Javascript] 동적으로 열과행이 늘어나는 표(table) 만들기 (domtoimage) (0) | 2019.12.31 |
변수 명명 규칙(naming rule) (0) | 2019.11.12 |
Comments