-
-
Notifications
You must be signed in to change notification settings - Fork 97
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Question] Can we transform an element itself instead transform canvas? #284
Comments
Thanks for reaching out! You can't rotate an image in-place before drawing it, you need to adjust the view to draw it correctly. There are other libraries that can help you rotate an image 90°, 180°, 270° before hand, but if you want to just use package main
import (
"image/png"
"os"
"github.com/tdewolff/canvas"
"github.com/tdewolff/canvas/renderers"
)
func main() {
// load image
f, err := os.Open("lenna.png")
if err != nil {
panic(err)
}
lenna, err := png.Decode(f)
if err != nil {
panic(err)
}
// setup canvas
c := canvas.New(200, 200)
ctx := canvas.NewContext(c)
// set coordinate system with origin in top-left
ctx.SetCoordSystem(canvas.CartesianIV)
// rotate the view at the center of the image
ctx.RotateAbout(-90.0, 50.0, 50.0) // negative is counter-clockwise in CartesianIV
ctx.DrawImage(0, 0, lenna, canvas.DPMM(512.0/100.0)) // image is 512x512 px drawn as 100x100 mm
ctx.ResetView()
// output as 200x200px
renderers.Write("out.png", c, canvas.DPMM(1.0))
} Let me know if that works or if you have any other questions! |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
To describe it more clearly, let me give an example. Now I have an image, its width and height are 100px. I want rotate this image around its center, it might be something like:
After rotate, We want to put it on canvas upper left corner:
In the end, we get a image, which is completely in the canvas upper left corner, after being rotated 90 degrees.
How can we simply achieve this effect? I look forward to discussing it with you
The text was updated successfully, but these errors were encountered: