{"id":10025,"date":"2020-09-14T12:00:47","date_gmt":"2020-09-14T16:00:47","guid":{"rendered":"http:\/\/www.theartofretouching.com\/blog\/?p=10025"},"modified":"2024-03-31T00:34:20","modified_gmt":"2024-03-31T04:34:20","slug":"what-is-effective-resolution-understanding-resolution-and-pixel-density","status":"publish","type":"post","link":"https:\/\/www.theartofretouching.com\/blog\/what-is-effective-resolution-understanding-resolution-and-pixel-density\/","title":{"rendered":"What is Effective Resolution? | Resolution and Pixel Density"},"content":{"rendered":"<h2><strong>What is Effective Resolution? Understanding Resolution and Pixel Density<\/strong><\/h2>\n<p><em>This video is available <strong>with Free For All<\/strong>.<\/em><br \/>\n<em><strong>Running Time<\/strong>: 10 minutes<\/em><\/p>\n<p>My name is John Ross from the Art of Retouching Studio. In this video, I&#8217;ll introduce you to three important topics that are essential for working with digital images in Photoshop, and these are <strong>pixels<\/strong>, <strong>image size<\/strong> and <strong>image resolution<\/strong>.<\/p>\n<p>Having a solid understanding of how they are related to each other is essential for getting the best results when resizing images, both for print and for the web.\u00a0Let\u2019s take a look at Image Resolution, and how you can make it work for you.<\/p>\n<p><!--more--><\/p>\n<div style=\"position: relative; top: 15px;\">\n\r\n\r\n<style>\r\n    \r\n\/* FOLLOWING TWO SHOULD HAVE SAME COLOR - videoControlBarColor *\/\r\n\/* Background color of control bar and big play button *\/\r\n#video1 .vjs-big-play-button {\r\n    border-color: #efefef  !important;\r\n    background-color: #333333 !important;\r\n    font-size: 20px !important;\r\n    opacity: .7;\r\n     }\r\n    \r\n    \r\n\r\n\/* Color of control bar *\/\r\n#videocontent1 .vjs-control-bar button {\r\n    background: unset !important;\r\n}    \r\n\r\n\r\n#videocontent1 .vjs-matrix .vjs-control-bar {\r\n    background: #333333 !important;\r\n    opacity: 1.0 !important;\r\n} \r\n\r\n\/* FOLLOWING TWO SHOULD HAVE SAME COLOR - videoMainColor *\/\r\n\/* Color of all text, icons and \"play\" triangle *\/\r\n#videocontent1 .vjs-default-skin {\r\n    color: #efefef !important; \r\n    overflow: hidden !important;\r\n            font-size: 10px !important;\r\n    }\r\n    \r\n\/* Change the color of various \"bars\" text: Scrubber and Volume - make it same as bg color of big play button*\/\r\n#videocontent1 .vjs-matrix .vjs-volume-level,\r\n#videocontent1 .vjs-matrix .vjs-play-progress,\r\n#videocontent1 .vjs-matrix .vjs-slider-bar\r\n{\r\n    background: #efefef !important;\r\n}\r\n    \r\ndiv#videocontent1 {\r\n    display: block !important;\r\n}    \r\n\r\n    \r\n                    \r\n\r\n\r\n\/* Style inner div to center button *\/\r\n.inner {\r\n    left: 50%;\r\n    top: 10%;\r\n    transform: translate(-50%, -50%);\r\n    position: absolute;\r\n}    \r\n    \r\n    \r\n\r\n        \/* hide the captions settings item from the captions menu *\/\r\n        .video1.vjs-texttrack-settings {\r\n            display: none;\r\n        }\r\n        \r\n    #videocontent1 .vjs-menu-button-popup .vjs-menu .vjs-menu-content {\r\n        background-color: #333333 !important;\r\n        color: #efefef !important;\r\n        padding: 0px !important;\r\n        margin: 0px !important;\r\n        max-height: none !important;\r\n    }\r\n    \r\n    #videocontent1 .vjs-menu-content li {\r\n        list-style: none !important;\r\n    }\r\n    \r\n    #videocontent1 li.vjs-menu-item {\r\n        margin-bottom: 0px !important;\r\n        margin: 0px !important;\r\n    }\r\n    \r\n    #videocontent1 .vjs-control .vjs-button {\r\n        padding-left: 0px !important;\r\n        padding-right: 0px !important;\r\n        margin-left: 0px !important;\r\n        padding:0px !important;\r\n    }\r\n    \r\n    #videocontent1 .vjs-playback-rate-value {\r\n        margin-right: 0em;\r\n    }\r\n    \r\n    #videocontent1 .vjs-playback-rate {\r\n        margin-right: 0em;\r\n    }\r\n        \r\n\r\n    \r\n#videocontent1 .vjs-user-inactive .vjs-control-bar {\r\n    display: none !important;\r\n    visibility: hidden !important;\r\n    opacity: 0 !important;\r\n    cursor: none !important;\r\n}\r\n    \r\n\/**\r\n#videocontent1 .vjs-big-play-button {\r\n    border: 0px !important;\r\n}\r\n*\/\r\n    \r\n#videocontent1 .vjs-play-control {\r\n    border: 0px !important;\r\n}\r\n    \r\n#videocontent1 .vjs-mute-control {\r\n    border: 0px !important;\r\n}\r\n\r\n#videocontent1 .vjs-control {\r\n    border: 0px !important;\r\n}\r\n\r\n#videocontent1 .vjs-button {\r\n    padding: 0px !important;\r\n    border: 0px !important;\r\n}    \r\n    \r\n#videocontent1 .vjs-picture-in-picture-control {\r\n    display: none !important;\r\n    visibility: hidden !important;\r\n    opacity: 0 !important;\r\n    cursor: none !important;\r\n}\r\n    \r\n    \r\n\r\n.video-js-dimensions.vjs-fluid { \r\n    padding-top: 56.25%;\r\n }\r\n.video-js { padding-top: 56.25%; }\r\n    \r\n    \r\n    \r\n<\/style>\r\n\r\n<script>\r\n\r\n    var watermarkCounter = 1;\r\n    \r\n    function setCookie(name, value, daysToExpire) {\r\n        \/\/console.log(\"setCookie\");\r\n        var expires = \"\";\r\n        if (daysToExpire) {\r\n            var date = new Date();\r\n            date.setTime(date.getTime() + (daysToExpire * 24 * 60 * 60 * 1000));\r\n            expires = \"; expires=\" + date.toUTCString();\r\n        }\r\n        document.cookie = name + \"=\" + value + expires + \"; path=\/\";\r\n    }\r\n    \r\n    function getCookie(cookieName) {\r\n        const cookies = document.cookie.split(';');\r\n\r\n        for (const cookie of cookies) {\r\n            const [name, value] = cookie.trim().split('=');\r\n            if (name === cookieName) {\r\n                return decodeURIComponent(value);\r\n            }\r\n        }\r\n\r\n        return null; \/\/ Cookie not found\r\n    }\r\n\r\n<\/script>\r\n\r\n\r\n        <!-- <link href=\"https:\/\/www.theartofretouching.com\/blog\/wp-content\/plugins\/S3MediaVaultPro\/includes\/css\/video-js-2.min.css\" rel=\"stylesheet\"> -->\r\n        <link href=\"https:\/\/www.theartofretouching.com\/blog\/wp-content\/plugins\/S3MediaVaultPro\/includes\/css\/videojs.watermark.css\" rel=\"stylesheet\">\r\n        \r\n        <!-- <script src=\"https:\/\/www.theartofretouching.com\/blog\/wp-content\/plugins\/S3MediaVaultPro\/includes\/javascript\/video-2.js\"><\/script> -->\r\n        <script src=\"https:\/\/www.theartofretouching.com\/blog\/wp-content\/plugins\/S3MediaVaultPro\/includes\/javascript\/videojs.watermark.js\"><\/script>\r\n        \r\n        <div id=\"videoparent1\">\r\n            <div id=\"videocontent1\" class=\"video-wrap\">\r\n                                    <video N id=\"video1\"  oncontextmenu=\"return false;\" class=\"vjs-matrix video-js-responsive-container video-js  vjs-16-9  vjs-default-skin vjs-big-play-centered\"  controls  preload=\"metadata\"  width=\"800\" height=\"450\"   poster=\"https:\/\/www.theartofretouching.com\/blog\/wp-content\/uploads\/2020\/09\/maxresdefault.jpg\"  data-setup='{\"fluid\": true   ,\"playbackRates\": [0.5, 0.75, 1, 1.25, 1.5, 1.75, 2]  }' playsinline>\r\n                        <source src=\"https:\/\/aor-public.s3.amazonaws.com\/Basic_1\/1-Digital_Fundamentals\/videos\/1_Df_3_Resolution.mp4?X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIATFRWUZAOT3CJXS7C%2F20260916%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260916T101317Z&X-Amz-SignedHeaders=host&X-Amz-Expires=1000&X-Amz-Signature=150be62ca85f0224cd3c973bebd7bd97d36618651ecaf9e4459e07345907bb28\" type=\"video\/mp4\" \/>\r\n                                            <\/video>\r\n                                                 <\/div>\r\n    <\/div>\r\n\r\n        \r\n                \r\n        <style>\r\n    \r\n    .vjs-fullscreen { padding-top: 0px }\r\n\r\n        \r\n    .buttonClass {\r\n        display: flex;\r\n        justify-content: center;\r\n        align-items: center;\r\n        vertical-align: baseline;\r\n        padding: 0px;\r\n    }\r\n\r\n                div1.vjs-watermark {\r\n                bottom: 30px !important;\r\n                top: unset !important;\r\n                right: 0 !important;\r\n                left: unset !important;\r\n            }\r\n         \r\n<\/style>\r\n\r\n<!-- JavaScript Start -->\r\n<script>\r\n    \r\n\/* <![CDATA[ *\/\r\nvar threshold1;\r\nvar ajaxurl = \"https:\/\/www.theartofretouching.com\/blog\/wp-admin\/admin-ajax.php\";\r\nvar promise;\r\n\r\nvar player1 = videojs('video1',{\r\n  width: \"800\",\r\n  height: \"450\"\r\n});\r\n\t\r\nplayer1.bigPlayButton.on('click', function(){\r\n\tif (player1.paused()) {\r\n\t\tplayer1.play();\r\n\t} \r\n\t\t\r\n});\r\n    \r\nvar div1;\r\n\r\n\r\n\r\nvar hasBeenClosed = false;\r\n       \r\n        function closePIP() {\r\n            var $videoWrap = jQuery('.video-wrap');\r\n            var $video = jQuery('.video');\r\n            var $closeButton = jQuery('.closeButton')\r\n\r\n            $videoWrap.height('auto');\r\n            $video.removeClass('stuck');\r\n            $closeButton.removeClass('closeShowing');\r\n            $closeButton.addClass('closeHidden');\r\n\r\n            hasBeenClosed = true;\r\n            player1.pause();\r\n            videojs('video1', { inactivityTimeout: 0 });\r\n            player1.bigPlayButton.show();\r\n\r\n        }\r\n    \r\njQuery(document).ready(function($) {\r\n    \r\n    jQuery(\"#closeButton\").hide();\r\n    var $window = jQuery(window);\r\n    var $videoWrap = jQuery('.video-wrap');\r\n    var $video = jQuery('.video');\r\n    var videoHeight = $video.outerHeight();\r\n    var $closeButton = jQuery('.closeButton')\r\n\r\n    $window.on('scroll',  function() {\r\n        var windowScrollTop = $window.scrollTop();\r\n        var videoBottom = videoHeight + $videoWrap.offset().top;\r\n\r\n        if ( (windowScrollTop > videoBottom) && !hasBeenClosed ) {\r\n            $videoWrap.height(videoHeight);\r\n            $video.addClass('stuck');\r\n            \/\/$closeButton.removeClass('closeHidden');\r\n            \/\/$closeButton.removeClass('closeHidden');\r\n            \/\/$closeButton.addClass('closeShowing');\r\n            \/\/$closeButton.display('block');                            \r\n            jQuery(\"#closeButton\").show();\r\n        } else {\r\n            $videoWrap.height('auto');\r\n            $video.removeClass('stuck');\r\n            jQuery(\"#closeButton\").hide();\r\n        }\r\n\r\n        \/\/console.log(\"videoHeight: \" + videoHeight + \", windowScrollTop: \" + windowScrollTop + \", videoBottom: \" + videoBottom);\r\n\r\n    });\r\n\r\n\/\/hideWatermarkOnLoad1();\r\n    \/\/alert(jQuery(window).width() + \", \" + jQuery(window).height());\r\n    div = document.getElementsByClassName(\"vjs-watermark\")[1-1];\r\n    if (div) {\r\n        \/\/div.style.display = \"none\";\r\n    }\r\n\r\n        \r\n        if(jQuery(window).width() >= 500) {\r\n            var skipBehindButton1 = player1.controlBar.addChild(\"button\", {}, 2);\r\n            var skipBehindButtonDom1 = skipBehindButton1.el();\r\n            skipBehindButtonDom1.innerHTML = \"<<\";\r\n            skipBehindButtonDom1.title = \"Rewind 15 Seconds\";\r\n            skipBehindButton1.addClass(\"buttonClass\");\r\n            skipBehindButtonDom1.onclick = function(){\r\n                skipS3MV1(-15);\r\n            }  \r\n\r\n            var skipAheadButton1 = player1.controlBar.addChild(\"button\", {}, 3);\r\n            var skipAheadButtonDom1 = skipAheadButton1.el();\r\n            skipAheadButtonDom1.innerHTML = \">>\";\r\n            skipAheadButtonDom1.title = \"Fast-Forward 15 Seconds\";\r\n            skipAheadButton1.addClass(\"buttonClass\");\r\n            skipAheadButtonDom1.onclick = function() {\r\n                skipS3MV1(15);\r\n            }  \r\n        }\r\n    \r\n        \r\n}); \/\/End jQuery(document).ready\r\n    \r\n\r\nfunction skipS3MV1(skipBy) {\r\n    player1.currentTime(player1.currentTime() + skipBy);\r\n}\r\n\r\n\r\nfunction getDomainName(hostName) {\r\n    return hostName.substring(hostName.lastIndexOf(\".\", hostName.lastIndexOf(\".\") - 1) + 1);\r\n}\r\n\r\n    \r\nfunction unmuteAndPlayFromStart2() {\r\n    var player1;\r\n    if(player1 == null) {\r\n        player1 = videojs(\"video1\");\r\n    }\r\n\r\n    if( (player1.muted()) && (timesMuted == 1) ) {\r\n        player1.watermark({\r\n          file: '',\r\n          xpos: 1,\r\n          ypos: 0,\r\n          xrepeat: 0,\r\n          opacity: 0,\r\n          url: '',\r\n          clickable: false,\r\n          text: false,\r\n          textContent: '',\r\n          fontSize: 0,\r\n          fontColor: '',\r\n          fontBGColor: ''\r\n        });    \r\n\r\n                player1.currentTime(0);\r\n        player1.muted(false);\r\n        player1.play();\r\n    }\r\n    timesMuted++;\r\n}\r\n\r\n\r\nfunction unmuteAndPlayFromStart1(player1) {\r\n    \/\/var player1;\r\n    if(player1 == null) {\r\n        player1 = videojs(\"video1\");\r\n    }\r\n    \/\/alert(timesMuted);\r\n        player1.currentTime(0);\r\n    player1.muted(false);\r\n    player1.play();\r\n}\r\n\r\n    \r\nfunction roundUpToAny(n,x=15) {\r\n    return Math.round((n+x\/2)\/x)*x;\r\n}\r\n            \r\n    \r\nvideojs(\"video1\").ready(function() {\r\n    \/\/console.log(\"Videojs Ready - should be called only once\");\r\n\tvar player1 = videojs(\"video1\");\r\n    var userIdAnon = 0;\r\n    var videoId = 75;\r\n    var anonTracking = \"N\";\r\n    var captions = localStorage.getItem('captions');\r\n    \/\/console.log(\"captions on load: \" + captions);\r\n    \r\n    if(captions === null) captions = \"on\";\r\n    \r\n    \r\n    var preferredLang = localStorage.getItem('caption-language');\r\n    let tracks = player1.textTracks();\r\n    var trackList = Array.prototype.slice.call(tracks);\r\n    var activeTrack = Array.from(tracks).find(track => track.mode === 'showing');\r\n    \/\/localStorage.setItem('caption-language', activeTrack.language);  \r\n    \/\/console.log(\"currently active language: \" + activeTrack.language);\r\n    \/\/console.log(\"preferredLang on load: \" + preferredLang);\r\n    var preferredLangIsSet = false;\r\n    \r\n    \/\/tracks.addEventListener('change', storeLanguageChoice);\r\n    \/\/var initialTrackLanguageChange = true;\r\n    \r\n    \/\/var videoEl1 = player1.el();\r\n\r\n    \r\n    var savedSpeed = localStorage.getItem('videoSpeed');\r\n    \/\/console.log(\"savedSpeed on load: \" + savedSpeed);\r\n    \r\n    if (savedSpeed) {\r\n        this.playbackRate(savedSpeed);\r\n    }\r\n    \r\n    \r\n    \/\/activeTrack = Array.from(tracks).find(track => track.mode === 'showing');\r\n    \/\/console.log(\"currently active language: \" + activeTrack.language);\r\n    \r\n    function setupTextTracks() {\r\n        \/\/console.log(\"in setupTextTracks\");\r\n        \/\/ If preferredLang found, get track and enable it\r\n        if( preferredLang && (captions === \"on\") ) {\r\n            \/\/console.log(\"preferredLang is set: \" + preferredLang);\r\n            tracks = player1.textTracks();\r\n            \/\/var targetTrack = Array.from(tracks).find(track => track.language === preferredLang);\r\n            \r\n            \/\/console.log(\"targetTrack mode: \" + targetTrack.mode);\r\n            \r\n            for (var i = 0; i < tracks.length; i++) {\r\n                var track = tracks[i];\r\n\r\n                \/\/ Check if the track is a captions track and if the language is German ('de')\r\n                if (track.kind === 'captions' && track.language === preferredLang) {\r\n                    \/\/console.log(\"Yes, match found\");\r\n                    track.mode = 'showing'; \/\/ Show the German captions\r\n                } else {\r\n                    track.mode = 'disabled'; \/\/ Hide other caption tracks\r\n                }\r\n            }\r\n            \r\n            preferredLangIsSet = true;\r\n        } \r\n    }\r\n    \r\n    \r\n    \/\/Can be moved to end??\r\n    \/\/Remembering Captions Settings on User Change\r\n    player1.textTracks().addEventListener('change', function() {\r\n        \/\/console.log(\"User changed captions settings\");\r\n\r\n        var tracks = player1.textTracks(); \r\n        \r\n        \/\/ Convert to array\r\n        var trackList = Array.prototype.slice.call(tracks);\r\n\r\n        \/\/ Check if captions are disabled \r\n        \/\/ I.e. no tracks in 'showing' mode\r\n        var disabled = !trackList.some(function(track) {\r\n            return track.mode === 'showing';  \r\n        });\r\n\r\n        if(disabled) {\r\n            \/\/ Captions were just set to off \r\n            localStorage.setItem('captions', 'off');\r\n            \/\/console.log('Captions disabled');\r\n        } else {\r\n            localStorage.setItem('captions', 'on');\r\n            \/\/console.log('Captions ENABLED');\r\n        }\r\n        \r\n        \r\n        if( captions === \"on\" ) {\r\n            trackList = Array.prototype.slice.call(tracks);\r\n            activeTrack = Array.from(tracks).find(track => track.mode === 'showing');\r\n            \/\/console.log(\"in User changed captions settings: active language: \" + activeTrack.language);\r\n            localStorage.setItem('caption-language', activeTrack.language);  \r\n        }\r\n\r\n    });\r\n    \r\n        \r\n    timesMuted = 0;\r\n    var button = document.createElement(\"button\");\r\n    button.setAttribute(\"id\", \"muteButton\");\r\n    var buttonRemoved = false;\r\n    var endTime = 0;\r\n\tvar restartedOnce = false;\r\n    \r\n    \/\/Disable full screen zand remove full screen on double click\r\n        \r\n\tthis.on('volumechange', function(){\r\n\t\ttimesMuted++;\r\n        \/\/alert(\"volume change \" + timesMuted);\r\n        if( !buttonRemoved && (timesMuted == 10000) ) {\r\n\t\t   \t\/\/alert(\"inside\");\r\n\t\t\tvideo1.removeChild(button);\r\n\t\t\t\/\/document.getElementById(\"muteButton\").remove();\r\n\t\t\tbuttonRemoved = true;\r\n\t\t   \tif(restartedOnce == false) {\r\n\t\t\t\tunmuteAndPlayFromStart1(player1);\r\n\t\t\t\trestartedOnce = true;\r\n\t\t\t}\r\n        }        \r\n    });\r\n    \r\n        \r\n    \r\n\r\n    \r\n    this.on('click', function(evt) {\r\n        \/\/console.log(\"video clicked, \" + evt.target.tagName);\r\n        if (evt.target.tagName === 'VIDEO') {\r\n            \/\/alert(\"after click unmuteAndPlayFromStart1(player1)\");\r\n            \/\/document.getElementsByTagName.removeChild(button);\r\n            if(!buttonRemoved) {\r\n                if(document.getElementById(\"muteButton\")) {\r\n                    document.getElementById(\"muteButton\").remove();\r\n                    buttonRemoved = true;\r\n                    if(restartedOnce == false) {\r\n\t\t\t\t\t\tunmuteAndPlayFromStart1(player1);\r\n\t\t\t\t\t\trestartedOnce = true;\r\n\t\t\t\t\t}\r\n                }\r\n            }\r\n        }\r\n        \r\n        \r\n    });\r\n    \r\n    this.on('pause', function() {\r\n        div = document.getElementsByClassName(\"vjs-watermark\")[1-1];\r\n        if (div) {\r\n            div.style.display = \"none\";\r\n        }\r\n        jQuery('#video1 .vjs-big-play-button').css('display', 'block');\r\n    });\r\n    \r\n        \r\n\tvar threshold1 = 15;\r\n\tvar counter1 = threshold1;\r\n    var duration1 = 484;\r\n    \r\n    \/\/Track loading time\r\n    \/\/console.log(\"ping 1: trackLoads\");\r\n\tvar data = {\r\n\t\t'action': 'trackLoads',\r\n\t\t'videoId': 75,\r\n\t\t'playTime': 0,\r\n        'event': 'load',\r\n        'postId': 10025\t};\r\n    \r\n\tjQuery.post(ajaxurl, data, function(response) { });\r\n    \r\n    st1 = -1;\r\n    et1 = 99999;\r\n    \/\/alert(\"st1: \" + st1 + \", et1: \" + et1);\r\n    playTime1 = 0;\r\n    playTimeCurrent1 = 0;\r\n    \r\n    if( (userIdAnon == 0) && (anonTracking == \"Y\") && (videoId == getCookie(\"videoIdAnon\")) ) {\r\n        playTimeAnon = getCookie(\"playTimeAnon\");\r\n        \/\/console.log(\"playTimeAnon from getCookie: \" + playTimeAnon); \r\n        \/\/console.log(\"videoId: \" + videoId);\r\n        playTimeCurrent1 = playTimeAnon;\r\n    }\r\n    \r\n    \/\/console.log(\"playTime1: \" + playTime1);\r\n    \/\/console.log(\"playTimeCurrent1: \" + playTimeCurrent1);\r\n    \r\n    \/\/console.log(parseInt(st1));\r\n    if(parseInt(st1) >= 0 ) {\r\n        playTimeCurrent1 = parseInt(st1);\r\n    }\r\n    this.currentTime(playTimeCurrent1);\r\n    if( (this.currentTime() + threshold1) > counter1 ) {\r\n        \/\/console.log(\"this.currentTime: \" + this.currentTime() + \", counter1: \" + counter1);\r\n        \/\/counter1 = this.currentTime() + threshold1;\r\n        counter1 = this.currentTime();\r\n        \/\/console.log(\"new this.currentTime: \" + this.currentTime() + \", counter1: \" + counter1);\r\n    }\r\n    \/\/console.log(\"playTime: \" + playTime);\r\n\tvar gotDuration1 = false;\r\n    \r\n    player1.ready(function(){\r\n        this.on('loadedmetadata', function(){ \r\n            \/\/console.log(\"this.duration: \" + this.duration());\r\n            duration1 = this.duration();\r\n            \/\/if (this.currentTime() <= duration1 -1)\r\n        })\r\n    });\r\n\r\n    this.on(\"seeked\", function(){\r\n        \/\/console.log(\"seeked: ------------------------Seeking\");\r\n        \r\n        cuepoint = 0;\r\n                \r\n        \r\n        ct = this.currentTime();\r\n        roundUpHowMuch = 1;\r\n        roundUp = roundUpToAny(ct,roundUpHowMuch);\r\n        \/\/diff = roundUp - counter1;\r\n        diff = ct - playTimeCurrent1;\r\n        diffRoundup = roundUpToAny(diff,roundUpHowMuch) - 30;\r\n        \/\/playTime1 = diffRoundup;\r\n        \/\/console.log(\"playTimeCurrent1: \" + playTimeCurrent1 + \", ct: \" + ct + \", roundUp: \" + roundUp + \", diff: \" + diff + \", diffRoundup: \" + diffRoundup);\r\n        \/\/console.log(\"seeked: currentTime \" + ct + \", old counter1: \" + counter1 + \", roundUp: \" + roundUp + \", diff: \" + diff);\r\n        counter1 = roundUp;\r\n        \/\/console.log(\"New counter1: \" + counter1);\r\n        \r\n        if( (diffRoundup > roundUpHowMuch) || (diffRoundup < -roundUpHowMuch) ) {\r\n            \/\/console.log(\"seeked: Yes, diff > roundUpHowMuch or < -roundUpHowMuch: \" + diffRoundup);\r\n            \/\/console.log(\"ping 2: seeked\");\r\n            var data = {\r\n                'action': 'trackViews',\r\n                'playTime': this.currentTime(),\r\n                'videoId': 75,\r\n                'duration': this.duration(),\r\n                'threshold': threshold1,\r\n                'event': 'seek',\r\n                'diff': diffRoundup,\r\n                'postId': 10025            };\r\n            jQuery.post(ajaxurl, data, function(response) { });\r\n        }\r\n        \r\n        playTimeCurrent1 = this.currentTime();\r\n        \/\/console.log(\"playTimeCurrent1: \" + playTimeCurrent1);\r\n\r\n        \/\/if(ct > roundUp) {\r\n            \/\/console.log(\"DO SOMETHING IMPORTANT HERE!!!!!!!!\");\r\n        \/\/}\r\n    });\r\n    \r\n    this.on(\"timeupdate\", function(){\r\n        \/\/console.log(\"in timeupdate\");\r\n        if (this.currentTime() >= et1) {\r\n            this.pause();\r\n        }\r\n        \r\n        \/\/if( (this.currentTime() + threshold1) > counter1 ) {\r\n            \/\/counter1 = this.currentTime() + threshold1;\r\n            \/\/console.log(\"this.currentTime: \" + this.currentTime() + \", counter1: \" + counter1);\r\n        \/\/}\r\n        \r\n        \/**\r\n        if (this.currentTime() <= duration1 -1) {\r\n            \/\/alert(\"here\");\r\n            playTime1 = 0;\r\n            playTimeCurrent1 = 0;\r\n        } else {\r\n            playTime1 = this.currentTime();\r\n            playTimeCurrent1 = this.currentTime();\r\n        }\r\n        \r\n        if( (this.currentTime() + threshold1) < counter1 ) {\r\n            console.log(\"this.currentTime: \" + this.currentTime() + \", counter1: \" + counter1);\r\n            counter1 = this.currentTime() + threshold1;\r\n            console.log(\"new this.currentTime: \" + this.currentTime() + \", counter1: \" + counter1);\r\n        }\r\n        *\/\r\n\t\t\r\n        \/\/console.log(\"timeupdate: ---> this.currentTime: \" + this.currentTime() + \", counter1: \" + counter1);\r\n        \r\n        if (this.currentTime() >= counter1) {\r\n            \/\/console.log(\"timeupdate: currentTime() >= counter1\");\r\n\r\n\t\t\t\/\/set a timer for threshold seconds\r\n            \/\/console.log(\"this.currentTime: \" + this.currentTime() + \", counter1: \" + counter1 + \", threshold1: \" + threshold1);\r\n\t\t\tsetInterval(function() {\r\n\t\t\t\t\/\/do nothing\r\n\t\t\t}, threshold1 * 1000);\r\n\t\t\t\/\/alert (counter1 + \" seconds up\");\r\n\t\t\t\r\n\t\t\tcounter1 += threshold1;\r\n\r\n\t\t\tif(!gotDuration1) {\r\n\t\t\t\tduration1 = this.duration();\r\n\t\t\t\tgotDuration1 = true;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\t\/\/Track play time\r\n            if( !this.paused() ) {\r\n                \/\/console.log(\"ping 3: timeupdate\");\r\n                var data = {\r\n                    'action': 'trackViews',\r\n                    'playTime': this.currentTime(),\r\n                    'videoId': 75,\r\n                    'duration': this.duration(),\r\n                    'threshold': threshold1,\r\n                    'event': 'play',\r\n                    'postId': 10025                };\r\n                jQuery.post(ajaxurl, data, function(response) { });\r\n                \r\n                if(userIdAnon == 0) { \/\/Anonymous user\r\n                    \/\/setCookie(\"userIdAnon\", \"0\", 30);\r\n                    setCookie(\"videoIdAnon\", \"75\", 30);\r\n                    setCookie(\"playTimeAnon\", this.currentTime(), 30);\r\n                    \/\/console.log(\"playTimeAnon: \" + this.currentTime());\r\n                }\r\n            }\r\n\r\n\t\t}\r\n        \r\n\t});\r\n\t\r\n    this.on(\"play\", function(){\r\n        \/\/this.playbackRate(1.5);\r\n        \/**\r\n        if(this.currentTime() < playTimeCurrent1) {\r\n            console.log(\"play: this.currentTime() < playTimeCurrent1\");\r\n            if(this.currentTime() < this.duration()) {\r\n                this.currentTime(playTimeCurrent1);\r\n            } else {\r\n                this.currentTime(0);\r\n            }\r\n            \/\/alert(this.currentTime() + \", \" + playTime);\r\n        }\r\n        *\/\r\n        \r\n                \r\n        \/**\r\n        var data = {\r\n            'action': 'trackLoads',\r\n            'videoId': 75,\r\n            'playTime': 0,\r\n            'event': 'start',\r\n            'postId': 10025        };\r\n    \r\n\t    jQuery.post(ajaxurl, data, function(response) { });        \r\n        \r\n        *\/\r\n        \r\n        jQuery('#video1 .vjs-big-play-button').css('display', 'none');\r\n        \r\n                    div = document.getElementsByClassName(\"vjs-watermark\")[1-1];\r\n            if (div) {\r\n                div.style.display = \"block\";\r\n            }\r\n                    });\r\n\r\n    \r\n    this.on(\"fullscreenchange\", function(){\r\n\t\tjQuery('.vjs-loading-spinner').remove();\r\n\t\tthis.loadingSpinner.hide();\r\n\t});\r\n\t\r\n    this.on('ended', function() {\r\n        \/\/console.log(\"ping 4: ended\");\r\n        var data = {\r\n\t\t\t'action': 'trackViews',\r\n\t\t\t'playTime': this.currentTime(),\r\n\t\t\t'videoId': 75,\r\n            'duration': this.duration(),\r\n            'threshold': threshold1,\r\n            'event': 'end',\r\n            'postId': 10025\t\t};\r\n        \/\/this.currentTime(st);\r\n        \/\/alert(\"starting time: \" + st);\r\n\t\tjQuery.post(ajaxurl, data, function(response) { });\r\n        \/\/console.log('ended: ' + this.duration());\r\n        \r\n        endTime1 = this.currentTime();\r\n\t\t\/\/Track play time\r\n\t\t\/\/console.log(\"event: end firing\");\r\n        counter1 = st1;\r\n        playTime1 = 0;\r\n        playTimeCurrent1 = 0;\r\n        this.currentTime(0);\r\n        threshold1 = 15;\r\n        \/\/console.log(\"ended: ping 2\");\r\n        \r\n  \t});\r\n    \r\n    \r\n    this.on('ratechange', function() {\r\n        var currentSpeed = this.playbackRate();\r\n        \/\/console.log(\"currentSpeed: \" + currentSpeed);\r\n        localStorage.setItem('videoSpeed', currentSpeed);\r\n    });\r\n    \r\n    \r\n        \r\n    \r\n        \r\n        \r\n    \r\n    \r\n    jQuery.fn.isInViewport = function() {\r\n        var elementTop = jQuery(this).offset().top;\r\n        var elementBottom = elementTop + jQuery(this).outerHeight();\r\n\r\n        var viewportTop = jQuery(window).scrollTop();\r\n        var viewportBottom = viewportTop + jQuery(window).height();\r\n\r\n        return elementBottom > viewportTop && elementTop < viewportBottom;\r\n    };\r\n    \r\n    \r\n    \r\n    \r\n        \r\nsetupTextTracks();\r\n    \r\n}); \/\/End videojs player ready\r\n\r\nvar promise;\r\n    \r\n\/\/localStorage.removeItem('captions');\r\n\/\/delete localStorage.captions;\r\n\/\/localStorage.clear();\r\n    \r\n\/* ]]> *\/\r\n<\/script>\r\n\r\n\r\n\r\n\r\n\n<\/div>\n<div style=\"position: relative; top: 25px;\">\n<h4><strong>Different Kinds of Resolution<\/strong><\/h4>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-10041 alignright\" src=\"https:\/\/www.theartofretouching.com\/blog\/wp-content\/uploads\/2020\/09\/color-3286027_1920-300x153.jpg\" alt=\"Different Kinds of Effective Resolution\" width=\"325\" height=\"214\" \/><\/p>\n<p>Simply put, resolution is the amount of detail that\u2019s available for an image. One million pixels equals 1mp. So, a 36mp camera can provide substantially more detail than a 12mp camera.\u00a0 As long as your image is sharp and in focus, then higher resolution equals more detail. But, the confusing part is that there are two different kinds of resolution.<\/p>\n<p>The first kind of Resolution refers to the Pixel Count, which is the actual number of pixels that create your photo. In order to calculate this resolution, you just use the same formula you would use for the area of any rectangle; multiply the length by the height. For example, if you have a photo that has 6,000\/px on the horizontal side, and 4,000\/px on the vertical size, this gives you a total of\u00a0 24 million pixels. As I just said, this would be 24mp.<\/p>\n<p>The other kind of resolution is about how you actually distribute the total amount of pixels that you have, which is referred to as Pixel Density. This is also commonly known as PPI, or Pixels Per Inch.<\/p>\n<p>What do I mean by \u201cDistribute\u201d? Well, your Phone\u2019s camera will likely have a default of 72\/ppi. A DSLR Camera that goes through Lightroom will have a default value of 240\/ppi. However, the industry standard for printing is 300\/ppi. On the surface, this looks like we have 3 completely different values.\u00a0However, if they are all based on 24mp, then they are all the same. They just happen to be arranged differently.<\/p>\n<p>Think of pixels as water. 8\/oz of water is always 8\/oz of water. It doesn\u2019t matter if you put it into an 8\/oz cup, a 16\/oz cup, or spill it all over the floor. So, if a 24mp image equals 8\/oz of water, then you can understand nothing changes, no matter what you do with it.<\/p>\n<p>&nbsp;<\/p>\n<h3><strong>Think of Pixels as Bricks<\/strong><\/h3>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-10031 alignright\" src=\"https:\/\/www.theartofretouching.com\/blog\/wp-content\/uploads\/2020\/09\/brick-252x168.jpg\" alt=\"Think of Pixels as Bricks\" width=\"325\" height=\"214\" \/><\/p>\n<p>If you have a patio paved with bricks, its size is determined by how many bricks you have, right? And if you want to measure that patio, one way would be to just count the bricks. A patio that is 20 bricks tall and 30 bricks long consists of 600 bricks total. It does not matter if it\u2019s wide, tall, or in a straight line. 600 bricks are always 600 bricks. What matters is how you arrange them.<\/p>\n<p>600 bricks will always be larger than a patio with 300 bricks, and smaller than a patio with 1,000 bricks. Simple.<\/p>\n<p>Switch those bricks to pixels, and now you\u2019re beginning to see how the number of pixels in an image file, or available on a DSLR sensor, directly determines how big the image size will be.<\/p>\n<p>The greater the number of pixels in an image, the denser the picture information, and therefore the higher the resolution. Higher resolution provides more detail within your image, and allows for larger printouts with smooth, continuous tone and color accuracy.<\/p>\n<p>When it comes to understanding digital image resolution and how it pertains to image size, all that matters are the number of pixels contained in the file. It\u2019s not about DPI, PPI or how many inches Photoshop says your photo is.<\/p>\n<p>What matters is the Area Resolution of the file, which is measured in pixels. When people talk about the Resolution of an image file, what they\u2019re really talking about is Area Resolution, because this dictates how large the file really is.<\/p>\n<p>&nbsp;<\/p>\n<h3><strong>Effective Resolution: Crap! Now what\u2019s this?!?<\/strong><\/h3>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-10034 alignright\" src=\"https:\/\/www.theartofretouching.com\/blog\/wp-content\/uploads\/2020\/09\/effective-resolution-238x168.jpg\" alt=\"Effective Resolution\" width=\"325\" height=\"214\" \/><\/p>\n<p>A key concept you need to understand is Effective Resolution. This is simply the final resolution of any picture at the actual size that it is placed within the document. This is really quite simple. Let\u2019s say you take a picture with a full background, but then later most of the background is cropped out.<\/p>\n<p>This is why you may have heard of 300\/dpi being an industry standard. If half is cropped out, it can still be printed at 150\/lpi (lines per inch), which is the front cover of a magazine.\u00a0I have another video that deep dives into the relationship between Dots Per Inch, Pixels Per Inch, and Lines Per Inch. You can find a link for that in the description below.<\/p>\n<p>Now, as I just said, your image may need to be cut in half. This is why photographers want a high MegaPixel Camera, it allows for extreme cropping. This is because of the high number of pixels to start with. If your subject is noticeably small in the frame, you may still be able to crop in, and get the shot.<\/p>\n<p>For example, many years ago I knew a photographer who had gotten a brand new D800 Nikon camera, which is 36mp. He felt that the size of these images was just too large (back then, it was). So inside the camera he scaled it down to 24mp.<\/p>\n<p>He had taken the photograph of the model from the top of his head down to his knees, then he gave the image to me. He told me he wanted it cropped at the waist. However, when I finished retouching, he told me that the image was too small and he needed it larger.<\/p>\n<p>So, if you start doing the math, the 36mp went down to 24mp. I then cut the image in half, which burned it down to 12mp. When he said it was too small, I needed to have Photoshop make-up pixels to bring it back to 18\/mp. This never would&#8217;ve happened if he had shot it at the full 36mp size to begin with.<\/p>\n<p>&nbsp;<\/p>\n<h3><strong>Enlarging Images<\/strong><\/h3>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-10033 alignright\" src=\"https:\/\/www.theartofretouching.com\/blog\/wp-content\/uploads\/2020\/09\/enlarging-images-300x134.jpg\" alt=\"Enlarging Images\" width=\"325\" height=\"214\" \/><\/p>\n<p>This introduces another Resolution issue, which is the overly enlarged image. This occurs when someone tries to take a really small image, and enlarge it to fit their design. While it is true that you can enlarge an image safely, going beyond a certain size will result in a degraded or even a \u201cpixelated\u201d (or blocky) looking image.<\/p>\n<p>It is generally recommended that you do not enlarge pictures more than 150% of the original size (at 300 PPI). Pictures enlarged beyond 125% will show some degradation, and enlarging an image beyond 200% can result in the actual pixels becoming visible.<\/p>\n<p>When you ask Photoshop to blow up images, it has to take similar pixels and create new pixels between them. This is called Interpolation. For example, if you have a red pixel and a blue pixel, it&#8217;s going to put a mixture of the two pixels in between, which would be a purple pixel.<\/p>\n<p>When Photoshop has to create new pixels or remove pixels it\u2019s basically just making things up as it goes along. And ultimately, the more work you do to the final image, the more damage that has to be done to it. But if you&#8217;re always working with the highest quality images that you possibly can from the very beginning, you can get away with a lot more by the time you&#8217;re done.<\/p>\n<p>One last big topic. Think back to the old video games of the 70s or 80s where all the little characters were very jagged. This is called Aliasing. Aliasing is the jagged, or saw-toothed appearance of curved or diagonal lines on a low-resolution display.<\/p>\n<p>Back then, the low resolution characters looked fine when they were on low resolution displays. But on today\u2019s High Definition displays, they need to be blown up, and they look bad because they&#8217;re just blocks of solid color.<\/p>\n<p>When blowing up images, Photoshop is going to compensate for that Aliasing. It will use what\u2019s called Anti-Aliasing, which means it&#8217;s going to soften pixels around other pixels in order to give it a smoother transition. The problem is it ultimately leads to softer looking images.<\/p>\n<p>&nbsp;<\/p>\n<h3><strong>Think of Pixels as Pizza<\/strong><\/h3>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-10042 alignright\" src=\"https:\/\/www.theartofretouching.com\/blog\/wp-content\/uploads\/2020\/09\/vita-marija-murenaite-eSeo6IzOV00-unsplash-252x168.jpg\" alt=\"Enlarging Images\" width=\"325\" height=\"214\" \/><\/p>\n<p>Here\u2019s a silly story, but this is the best way I ever had resolution explained to me. Imagine you work in a kitchen, and you just made a pizza pie. It&#8217;s a nice big round pizza, it has all the ingredients on top of it, and you haven\u2019t had lunch yet. So you take away a slice of pizza, and you eat it. Well, we can&#8217;t let everyone else know that you did that.\u00a0Right?<\/p>\n<p>So you kind of flatten out and mush it together so that you fill in that missing gap. No one&#8217;s really going to notice because you had enough information to begin with, so that it still looks good.<\/p>\n<p>But you\u2019re still hungry, so you take a second slice. Well, now you&#8217;ve technically taken two slices out of this pizza. So once again, you mush it, and you push it back together.<\/p>\n<p>To do this, you had to make it a little smaller than intended, and it has to be a thin crust\u00a0 because you&#8217;ve just eaten two slices. But it&#8217;s still enough that you can technically get away with it, and no one&#8217;s really going to question it.<\/p>\n<p>But you&#8217;re still hungry and you take another slice. Now you have a problem. You take that pizza and mush it together, and you try to make it smaller with the thinnest crust possible. But, all the ingredients fall through the crust because it\u2019s so thin.<\/p>\n<p>So, if you were to compare this to resolution, if you start with the largest size image your camera can produce, you can get away with a lot. As long as the image was sharp to begin with, you can scale the image bigger or smaller because you had all of the original information to start with.<\/p>\n<p>However, if you keep cropping your image, blowing it up, shrinking it, and doing other damage, it will eventually fall apart. Just as bad, saving it as a JPG more than once, and you will have a real mess on your hands.<\/p>\n<p>&nbsp;<\/p>\n<h3><strong>When Resolution is Irrelevant<\/strong><\/h3>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-10037 alignright\" src=\"https:\/\/www.theartofretouching.com\/blog\/wp-content\/uploads\/2020\/09\/irrelevant-252x168.jpg\" alt=\"When Resolution is Irrelevant\" width=\"325\" height=\"214\" \/><\/p>\n<p>So, when IS Resolution Irrelevant? This happens at the tipping point when your Effective Resolution is significantly lower than the Actual Resolution. If you have a 24mp camera, this should cover most of your needs, because that\u2019s about 13\/in by 20\/in. So If you have 36mp, then all the better.\u00a0You have starting information to crop down, blow up, and do whatever you want.<\/p>\n<p>But after that, 50mp, 75mp, or even 100mp, it\u2019s complete overkill. I once started to work on a 100mp image, and my first 2 steps created a 2gb file. I had not even started working yet, I barely prepped it. I needed to come up with a completely different workflow.<\/p>\n<p>While the obvious answer is to simply work on images at their full camera size, this isn\u2019t always the case, or even practical. I once did a composite that took two 36mp images and put them together, plus I added to the top, bottom and sides.<\/p>\n<p>This thing was huge, and because it was a composite, I was adding layer after layer. I was working in 16-bit depth, and this file was so large, I had to start using something called Linked Smart Objects. Working on it was painfully slow, and the computer wanted to die.<\/p>\n<p>In the end, it printed at 10\/in tall. To this day, I still wonder why I went through all that. I should have just worked on it as a single 36mp, and scaled everything else DOWN, instead of everything else UP. I should have just kept in mind what the Effective Resolution was going to be.<\/p>\n<p>Resolution is an incredibly complicated topic, but I hope this video helped explain it for you. If you would like to see how it works in the real world, I have a side-car video I plan on making. When it\u2019s ready, I will add it to the description below.<\/p>\n<p>&nbsp;<\/p>\n<h3><strong>Resolution in the Real World<\/strong><\/h3>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-10036 alignright\" src=\"https:\/\/www.theartofretouching.com\/blog\/wp-content\/uploads\/2020\/09\/real-world-252x168.jpg\" alt=\"Effective Resolution in the Real World\" width=\"325\" height=\"214\" \/><\/p>\n<p>Let\u2019s do a practice exercise to see how Photoshop manipulates files with the Image Size dialog box. Using Photoshop, let\u2019s start with a very basic file. I&#8217;m going to create a new image, and make the width 100px by a height of 100px, with a \u201cResolution\u201d of 300\/ppi. For now, just click okay, and it&#8217;s going to create a blank white image for us.<\/p>\n<p>Next, go to Image &#8211; Image Size. Within this dialog box, we can play around with Resolution. Currently, this says our Image Dimensions are 100\/px by 100\/px. It\u2019s Width is .33\/in by a Height of .33\/in at a resolution of 300\/ppi.<\/p>\n<p>And below that, we have a checkbox which says Resample. To get started, I&#8217;m going to uncheck this Resample checkbox. With this setup, this dialog box becomes a scale, where everything needs to be balanced.<\/p>\n<p>If I was to change this Resolution of 300\/ppi to 150\/ppi, watch what happens. By cutting the PPI in half, notice that the pixels themselves haven&#8217;t changed. They are still 100\/px by 100\/px. However, the inches have doubled to .667\/in. If I was to cut the Resolution in half again, down to 75, once again it&#8217;s made our inch size larger at 1.33\/in. But again, it hasn&#8217;t changed our actual pixels at all. Nothing has physically changed in this image.<\/p>\n<p>The bottom line of it is this, if the inches go up, then the Resolution goes down. If the Resolution goes up, then the Inches go down. But at the end of the day, we haven&#8217;t actually done anything to this image. It&#8217;s still the same 100\/ppi that we started with. It doesn&#8217;t matter I make the numbers.<\/p>\n<p>I&#8217;m going to change these values back to where we started, .33 inches by .33 inches at a resolution of 300ppi. Now, lets turn on the Resample Checkbox. We&#8217;ve just given Photoshop permission to add or remove pixels to the image.<\/p>\n<p>If I change the resolution to 600, the inches haven&#8217;t changed. It still says .33\/in, but the pixels have doubled in size to 200\/px by 200\/px. That&#8217;s because we told Photoshop to Resample, or scale this image, based off of the new information. And the new information that we just gave, was make it twice the size that it was originally because we went from 300\/ppi to 600\/ppi.<\/p>\n<p>If I was to go back to 300\/ppi, you can see this goes back to 100\/px. But if I cut the Resolution in half to 150\/ppi, the actual pixels have been cut in half down to 50\/px.<\/p>\n<p>By making the resolution larger, we\u2019re making the image larger by adding more pixels. By making the Resolution lower, Photoshop throws away pixels, and this makes the image smaller.<\/p>\n<p>This gets confusing though, because we are just changing the number of pixels, not the inches. But just like then first example with Resample unchecked, Photoshop is being used like a calculator. If we leave Resolution fixed at 300\/ppi, then change the Inches instead, we are technically doing the same thing, which is adding (or removing) pixels.<\/p>\n<p>In the last example, we raised Resolution up to 600\/ppi, which brought the Pixel Dimension up to 200\/px but it didn\u2019t change inches. Because this is all a scale, we can leave the Resolution at 300\/ppi, and change the inches to .66\/in. Now you can see the pixels doubled to 200\/px.<\/p>\n<p>All you need to know is that Pixels are for Screen Display, and the Width and Height are for Printing. As long as you have enough pixels for screen size you want, you\u2019re good. For printing, as long as the Width and Height meet the size you need, and Resolution is \u201cat least\u201d 200\/ppi, with 300\/ppi being best, then your good.<\/p>\n<p>Also when making YouTube Thumbnails, using a 24mp camera to take a selfie is fine, just know that you&#8217;re going to be reducing it to like 10%. Therefore, the extra 90% of information was irrelevant.<br \/>\n&nbsp;<br \/>\n&#8230;<br \/>\nUnderstanding effective resolution is like mastering the ABCs of digital image editing. Imagine pixels as the building blocks of your image, much like bricks in a wall. The more pixels, the more details in your picture. But it&#8217;s not just about the sheer number; it&#8217;s also about how you arrange them.<\/p>\n<p>Think of pixels as ingredients on a pizza. Starting with a big pizza, you can take a few slices without anyone noticing. But if you keep taking slices, eventually, the pizza falls apart. Similarly, if you edit an image too much\u2014cropping, enlarging, or saving it multiple times\u2014it can lose quality.<\/p>\n<p>Effective resolution is your image&#8217;s final quality at its actual size in a document. It&#8217;s crucial when resizing or cropping. Starting with a high-resolution image gives you more flexibility. It&#8217;s like having a big pizza; you can adjust without losing quality.<\/p>\n<p>Remember, resolution matters less when viewing on screens but is crucial for printing. So, keep your pixels (ingredients) in check, and you&#8217;ll create digital masterpieces with ease!\n<\/p><\/div>\n<p>&nbsp;<br \/>\n<strong>Suggested Next Video: <\/strong><a href=\"https:\/\/www.theartofretouching.com\/blog\/8bit-16bit-32bit-bit-depth\/\" title=\"8-Bit vs. 16-Bit | Bit Depth | What is Tonal Range?\" target=\"_self\" rel=\"noopener\">8-Bit vs. 16-Bit | Bit Depth | What is Tonal Range?<\/a> <\/p>\n","protected":false},"excerpt":{"rendered":"<p>In this video, I\u2019ll introduce you to three important topics that are essential for working with digital images in Photoshop, and these are pixels, image size and image resolution. Having a solid understanding of how they are related to each other is essential for getting the best results when resizing images, both for print and for the web.\u00a0Let\u2019s take a look at Image Resolution, and how you can make it work for you.<\/p>\n<p>Having a solid understanding of how they are related to each other is essential for getting the best results when resizing images, both for print and for the web. Let\u2019s take a look at Image Resolution, and how you can make it work for you.<\/p>\n","protected":false},"author":1816,"featured_media":10030,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_sitemap_exclude":false,"_sitemap_priority":"","_sitemap_frequency":"","_genesis_hide_title":false,"_genesis_hide_breadcrumbs":false,"_genesis_hide_singular_image":false,"_genesis_hide_footer_widgets":false,"_genesis_custom_body_class":"","_genesis_custom_post_class":"","_genesis_layout":"","footnotes":""},"categories":[842,7],"tags":[1059,1061,1062,1060],"class_list":["post-10025","post","type-post","status-publish","format-standard","has-post-thumbnail","category-digital-fundamentals","category-retouchingbasics","tag-effective-resolution","tag-pixel-density","tag-pixels","tag-resolution","entry","override"],"_links":{"self":[{"href":"https:\/\/www.theartofretouching.com\/blog\/wp-json\/wp\/v2\/posts\/10025","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.theartofretouching.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.theartofretouching.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.theartofretouching.com\/blog\/wp-json\/wp\/v2\/users\/1816"}],"replies":[{"embeddable":true,"href":"https:\/\/www.theartofretouching.com\/blog\/wp-json\/wp\/v2\/comments?post=10025"}],"version-history":[{"count":22,"href":"https:\/\/www.theartofretouching.com\/blog\/wp-json\/wp\/v2\/posts\/10025\/revisions"}],"predecessor-version":[{"id":11586,"href":"https:\/\/www.theartofretouching.com\/blog\/wp-json\/wp\/v2\/posts\/10025\/revisions\/11586"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.theartofretouching.com\/blog\/wp-json\/wp\/v2\/media\/10030"}],"wp:attachment":[{"href":"https:\/\/www.theartofretouching.com\/blog\/wp-json\/wp\/v2\/media?parent=10025"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.theartofretouching.com\/blog\/wp-json\/wp\/v2\/categories?post=10025"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.theartofretouching.com\/blog\/wp-json\/wp\/v2\/tags?post=10025"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}