What is going on when you copy the src from the html and put it in the browser, is that you are opening the image that is created on the fly by PHP in your browser.
As you are opening the image directly in the browser, the browser generates some very simple and basic html in its DOM, to show you that images that you have opened directly. That HTML is what you see when you Inspect Element, and go to the HTML tab. If you pay close attention you will not even see a "view source" button, once opening the image directly. You only see the Inspect Element button.
That HTML is NOT the source code, but just the DOM representation of the 'page' you are looking at.
In regards to your EDIT:
So, the php file in the src is a file that creates an image on the fly, and outputs its binary data. This is possible and explained a bit more in the answer of WereWolf - The Alpha. Your browser recognizes that binary data, and renders an image out of it. (Partly because it knows it was opened as an 'src' of an 'img' tag, so it is expecting that url will return an image. But mainly because of the 'content-type' header that was sent along is also telling that the data is an image.)
It just when the browser shows you this binary data as an image, the browser itself generates some HTML in the DOM so the image is displayed as an 'html' page. Because, hey, that's was browser do, they want to show you HTML :)
When I Copy source of image tag and run in browser and check its source code,It again give me Image tag againWhat does that mean? Can you describe what it is exactly that you're doing, and what you're expecting? The browser doesn't know or care that PHP is on the server. PHP generates an image on the fly (derived from another image file in this case), and returns it to the browser.