react-image-annotate icon indicating copy to clipboard operation
react-image-annotate copied to clipboard

How to save an image along with the annotations?

Open TrongNhan30520 opened this issue 2 years ago • 4 comments

Suppose I did mark some things using a box in the image, and now I want to save/export/download that image along with that box. How can we do that?

TrongNhan30520 avatar Jul 06 '22 04:07 TrongNhan30520

Any answer for this question?

nadavof avatar Dec 28 '22 15:12 nadavof

@nadavof You can use canvas to redraw the image and caption frame then export it as an image

TrongNhan30520 avatar Dec 29 '22 03:12 TrongNhan30520

Hi guys, I've got the same issue, So I code it like this:

  • Create canvas element into the HTML and also get element in the script (js)

  • Draw with that canvas (with getContext("2d") functionality)

  • Load an image which I'm using canvas background

  • forEach region where can I have boxes/sizes/etc.

  • Export canvas to the image/jpeg format (base64)

Briefly, I'll share with you what I wrote on my project and enjoy it.

const canvas = document.getElementById("myCanvas")
const ctx = canvas.getContext("2d")

const image = new Image()
image.src = imageUrl
image.crossOrigin = "Anonymous"
image.onload = () => {
      ctx.drawImage(image, 0, 0, canvas.width, canvas.height)

      output.images[0].regions.forEach((obj) => {
        ctx.strokeStyle = obj.color
        ctx.lineWidth = 2
        ctx.strokeRect(
          obj.x * canvas.width,
          obj.y * canvas.height,
          obj.w * canvas.width,
          obj.h * canvas.height
        )

        ctx.font = "20px Arial"
        ctx.fillStyle = obj.color
        ctx.fillText(1, obj.x * canvas.width, obj.y * canvas.height - 10)

        ctx.globalAlpha = 0.2
        ctx.fillStyle = obj.color
        ctx.fillRect(
          obj.x * canvas.width,
          obj.y * canvas.height,
          obj.w * canvas.width,
          obj.h * canvas.height
        )
})

const dataURL = canvas.toDataURL("image/jpeg")

I'm using this function on the onExit param in Annotator

asyncfinkd avatar Aug 18 '23 22:08 asyncfinkd