If you think in terms of the horizontal and vertical velocities of the ball then this may make the problem more tractable.
So I assume that when a collision is detected that this is handled by adjusting the vertical velocity. The most trivial way to do this would be to invert it so that the ball will start travelling up instead of down. You could for example do this by multiplying the y-velocity by -1. So this gives you the basic bounce, but you want it to bounce differently based on where it hits the paddle so you want to change the x and you velocity by different amounts depending on where the paddle collides with the ball.
In the case you describe for example - assuming that you don't want to alter the speed that the ball is travelling you will need to create a function that uses pythagorus's formula to proportionately split the x and y velocities to a new ratio as a function of where it colliding with the bat.
In your example it looks like you want to transfer more of the y velocity to x velocity in your right-hand picture.
In your left hand picture it looks like you want to invert the x velocity as well as the y velocity but also redistribute the combined x+y velocity so that more is transferred to the inverted x than the inverted y.
Perhaps a few more examples to demonstrate the desired behaviour across the bat and we could explore some functions?