Нет, не должно. document.ready запускается, когда весь HTML загружен, но не изображения. Если вы хотите дождаться загрузки всех изображений, используйте window.load.
Пример:
$(window).load(function(){
var diff = $('div.canvas img.photo').get(1).width;
console.log(diff);
});
Кроме того, как отмечали некоторые люди, вы пытались получить свойство ".width" дважды.
Если это вообще возможно, установите ширину графических тегов в CSS. Таким образом, вы можете безопасно использовать document.ready для своего кода. Использование window.load естественным образом задержит выполнение вашего скрипта, может быть секунда, может быть десять, в зависимости от скорости соединения клиентов и количества контента на вашей странице. Это может привести к нежелательным скачкам и дрожанию, если вы выполняете какие-либо стили.