Lien vers le code source : https://gamelogiq.dev/wp-content/uploads/2023/04/Image_deplacement_rotation_zoom.zip

-- Changer le titre de la fenetre
love.window.setTitle("Cours image [move, rotate and zoom]")

-- variables des dimensions de la fenetre love2d
local ecranLargeur = love.graphics.getWidth()
local ecranHauteur = love.graphics.getHeight()

-- notre table pour manipuler rnotre image
local image = {}


function love.load()
  image.file = "squellettezombie.png"
  image.imgdata = love.graphics.newImage(image.file)
  --
  image.w, image.h = image.imgdata:getDimensions()
  image.ox, image.oy = image.w/2, image.h/2
  --
  image.x =  ecranLargeur / 2
  image.y =  ecranHauteur / 2
  --
  image.scale = 1
  image.angle = 270
  --
  image.showOrigin = true
end
--

function love.update(dt)

  local isDown = love.keyboard.isDown

  -- déplacement verticale Y :
  if isDown("z") and isDown("s") then
    -- rien, les deux touches sont appuyés
  elseif isDown("z") then -- HAUT
    image.y = image.y - 60 * dt
  elseif isDown("s") then -- BAS
    image.y = image.y + 60 * dt
  end

  -- déplacement horizontale X :
  if isDown("q") and isDown("d") then
    -- rien, les deux touches sont appuyés
  elseif isDown("q") then -- Gauche
    image.x = image.x - 60 * dt
  elseif isDown("d") then -- Droite
    image.x = image.x + 60 * dt
  end

  -- scale (Zoom) :
  if isDown("up") and isDown("down") then
    -- rien, les deux touches sont appuyés
  elseif isDown("up") then -- HAUT
    image.scale = image.scale + 10 * dt
  elseif isDown("down") then -- BAS
    image.scale = image.scale - 10 * dt
  end
  if image.scale <= 0 then image.scale = 0.1 end

-- Rotation :
  if isDown("left") and isDown("right") then
    -- rien, les deux touches sont appuyés
  elseif isDown("left") then -- Gauche
    image.angle = image.angle - 10 * dt
  elseif isDown("right") then -- Droite
    image.angle = image.angle + 10 * dt
  end

end
--

function love.draw()
  -- show image :
  -- love.graphics.draw(imageData, x, y , angle, scaleX, scale Y, OrigineX, OriginY) :
  love.graphics.draw(image.imgdata, image.x, image.y, image.angle, image.scale, image.scale, image.ox, image.oy) 

  -- show origine of image :
  if image.showOrigin then
    love.graphics.circle("fill",image.x, image.y, image.scale) 
  end

  -- Help Text :
  local txt = "Press z,q,s,d to move image".."\n"
  txt = txt.."Press up,down to change Zoom Scale".."\n"
  txt = txt.."Press left,right to change Angle".."\n"
  txt = txt.."Press Enter/return for ide/show Point of Origne".."\n"
  txt = txt.."Press space to reset to default".."\n"
--  txt = txt.."Or Press Escape to Quit.".."\n"
  love.graphics.print(txt,10,10,0,2,2)
  txt = ""
  txt = txt.."image.scale : "..image.scale.."\n"
  txt = txt.."image.angle : "..image.angle.."\n"
  txt = txt.."image.x : "..image.x.."\n"
  txt = txt.."image.y : "..image.y.."\n"
  love.graphics.print(txt,10,450,0,2,2)
end
--

function love.keypressed(key)
  if key == "return" then
    image.showOrigin = not image.showOrigin
  elseif key == "space" then
    love.load()
  end
end
--