Resmi farklı kaydet eventini normal koşullarda yakalayamıyoruz. Fakat blur eventini kullanarak, bu soruna basit bir  çözüm bulmuş oluyoruz.

var contextMenuCallBack = function (event) {
  var srcElement, blurCallBack = function (event) {
      // oluşturulmuş blur eventi silinir.
      window.removeEventListener('blur', blurCallBack, false);
      // yakalanmış image elementi
      console.log(srcElement); 
      alert(srcElement.src)
      return false
  }

  return function (event) {
    // menü hangi element üzerinde ise, onu set ediyoruz.
    srcElement = event.target || event.srcElement
    // daha önce eklenmiş blur eventini siliyoruz.
    window.removeEventListener('blur', blurCallBack, false) 
    //yakalanan element image mi? kontrol ediyoruz
    if ('IMG' == srcElement.nodeName && 'A' != srcElement.parentNode.nodeName) 
    {
      //blur ile eventini dinliyoruz
      window.addEventListener('blur', blurCallBack, false) 
    }
    return false
  }
}()

document.body.addEventListener('contextmenu', contextMenuCallBack, true)

saveImageAs

Demo yapalım