Hola:
Con javascript solo podrías cambiar los atributos o estilos width y height... cambiando solo uno, y sin existir el otro, se escala proporcionalmente, pero con las imágenes normales se produce el efecto de pixelado, así que tal vez sea mejor poner esa imágenes como fondos de capas, en donde usando también sus estilos se pueden centrar style="background: url(imagen.jpg) no-repeat center center"
Otra posibilidad es tener en el servidor esa imagen con su máximo tamaño, y reducirlas también en el servidor...
Con figuras geométricas puedes usar el formato svg que es escalable, aunque no soportado en antiguas versiones de los navegadores.
Saludos