{"id":38824,"date":"2025-10-18T09:35:09","date_gmt":"2025-10-18T16:35:09","guid":{"rendered":"https:\/\/cloudinary.com\/blog\/?p=38824"},"modified":"2025-10-21T13:41:40","modified_gmt":"2025-10-21T20:41:40","slug":"how-to-get-the-image-size-in-php","status":"publish","type":"post","link":"https:\/\/cloudinary.com\/blog\/questions\/how-to-get-the-image-size-in-php","title":{"rendered":"How to get the image size in PHP?"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Whether you are validating uploads, generating responsive thumbnails, or optimizing delivery, you often need to know the width, height, and file size of images in PHP. Below is a practical, community-style Q and A covering local files, remote URLs, and some pitfalls.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Question:<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><em>How to get the image size in PHP?<\/em><br><br><em>I need to read both dimensions and file size for images uploaded by users and also for images fetched from remote URLs. What is the most reliable way to do this in PHP, and how should I handle different formats and performance concerns? Bonus points for examples that work with file uploads, local files, and external links.<\/em><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Answer:<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">You can retrieve image dimensions and bytes in PHP using built-in functions, the Imagick extension for performance on large files, and HTTP requests for remote sources. Here are practical patterns you can plug into your app.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1) Local files: width and height with getimagesize<\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml shcb-wrap-lines\"><span class=\"php\"><span class=\"hljs-meta\">&lt;?php<\/span>\n$path = <span class=\"hljs-keyword\">__DIR__<\/span> . <span class=\"hljs-string\">'\/images\/photo.jpg'<\/span>;\n\n$info = @getimagesize($path);\n<span class=\"hljs-keyword\">if<\/span> ($info === <span class=\"hljs-keyword\">false<\/span>) {\n\u00a0 \u00a0 <span class=\"hljs-keyword\">throw<\/span> <span class=\"hljs-keyword\">new<\/span> RuntimeException(<span class=\"hljs-string\">'Not a valid image or unreadable file.'<\/span>);\n}\n\n$width\u00a0 = $info&#91;<span class=\"hljs-number\">0<\/span>];\n$height = $info&#91;<span class=\"hljs-number\">1<\/span>];\n$mime \u00a0 = $info&#91;<span class=\"hljs-string\">'mime'<\/span>] ?? <span class=\"hljs-keyword\">null<\/span>;\n\n<span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">\"Dimensions: {$width}x{$height}, MIME: {$mime}\\n\"<\/span>;\n<span class=\"hljs-meta\">?&gt;<\/span><\/span>\n\ngetimagesize works for common formats like JPEG, PNG, GIF, and sometimes WebP.\n\nTo validate file types more robustly, check MIME with finfo:\n\n<span class=\"php\"><span class=\"hljs-meta\">&lt;?php<\/span>\n$finfo = finfo_open(FILEINFO_MIME_TYPE);\n$mime\u00a0 = finfo_file($finfo, $path);\nfinfo_close($finfo);\n<span class=\"hljs-meta\">?&gt;<\/span><\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\">2) Local files: file size in bytes<\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml shcb-wrap-lines\"><span class=\"php\"><span class=\"hljs-meta\">&lt;?php<\/span>\n$bytes = filesize($path);\n<span class=\"hljs-keyword\">if<\/span> ($bytes === <span class=\"hljs-keyword\">false<\/span>) {\n\u00a0 \u00a0 <span class=\"hljs-keyword\">throw<\/span> <span class=\"hljs-keyword\">new<\/span> RuntimeException(<span class=\"hljs-string\">'Could not read file size.'<\/span>);\n}\n<span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">\"File size: {$bytes} bytes\\n\"<\/span>;\n<span class=\"hljs-meta\">?&gt;<\/span><\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\">3) File uploads: validate quickly and safely<\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml shcb-wrap-lines\"><span class=\"php\"><span class=\"hljs-meta\">&lt;?php<\/span>\n<span class=\"hljs-keyword\">if<\/span> (!<span class=\"hljs-keyword\">isset<\/span>($_FILES&#91;<span class=\"hljs-string\">'image'<\/span>]) || $_FILES&#91;<span class=\"hljs-string\">'image'<\/span>]&#91;<span class=\"hljs-string\">'error'<\/span>] !== UPLOAD_ERR_OK) {\n\u00a0 \u00a0 <span class=\"hljs-keyword\">throw<\/span> <span class=\"hljs-keyword\">new<\/span> RuntimeException(<span class=\"hljs-string\">'No file or upload error.'<\/span>);\n}\n$tmp = $_FILES&#91;<span class=\"hljs-string\">'image'<\/span>]&#91;<span class=\"hljs-string\">'tmp_name'<\/span>];\n\n$info = @getimagesize($tmp);\n<span class=\"hljs-keyword\">if<\/span> ($info === <span class=\"hljs-keyword\">false<\/span>) {\n\u00a0 \u00a0 <span class=\"hljs-keyword\">throw<\/span> <span class=\"hljs-keyword\">new<\/span> RuntimeException(<span class=\"hljs-string\">'Uploaded file is not an image.'<\/span>);\n}\n\n$width\u00a0 = $info&#91;<span class=\"hljs-number\">0<\/span>];\n$height = $info&#91;<span class=\"hljs-number\">1<\/span>];\n$bytes\u00a0 = filesize($tmp);\n\n<span class=\"hljs-keyword\">if<\/span> ($width &gt; <span class=\"hljs-number\">4000<\/span> || $height &gt; <span class=\"hljs-number\">4000<\/span> || $bytes &gt; <span class=\"hljs-number\">5<\/span> * <span class=\"hljs-number\">1024<\/span> * <span class=\"hljs-number\">1024<\/span>) {\n\u00a0 \u00a0 <span class=\"hljs-keyword\">throw<\/span> <span class=\"hljs-keyword\">new<\/span> RuntimeException(<span class=\"hljs-string\">'Image exceeds limits.'<\/span>);\n}\n\n<span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">\"OK: {$width}x{$height}, {$bytes} bytes\\n\"<\/span>;\n<span class=\"hljs-meta\">?&gt;<\/span><\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Tip: If you work with EXIF-heavy formats like JPEG, you may need to account for orientation flags. See this primer on <a href=\"https:\/\/cloudinary.com\/guides\/image\/how-to-check-metadata-of-an-image\">how to check image metadata<\/a>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">4) Remote images: dimensions via getimagesize or curl<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">If allow_url_fopen is enabled, getimagesize can read URLs directly:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml shcb-wrap-lines\"><span class=\"php\"><span class=\"hljs-meta\">&lt;?php<\/span>\n$url = <span class=\"hljs-string\">'https:\/\/example.com\/photo.jpg'<\/span>;\n$context = stream_context_create(&#91;<span class=\"hljs-string\">'http'<\/span> =&gt; &#91;<span class=\"hljs-string\">'timeout'<\/span> =&gt; <span class=\"hljs-number\">5<\/span>]]);\n$info = @getimagesize($url, $context);\n<span class=\"hljs-keyword\">if<\/span> ($info) {\n\u00a0 \u00a0 <span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">\"Remote image: {$info&#91;0]}x{$info&#91;1]}\\n\"<\/span>;\n}\n<span class=\"hljs-meta\">?&gt;<\/span><\/span>\n\nWithout allow_url_fopen, fetch a small chunk and parse it:\n\n<span class=\"php\"><span class=\"hljs-meta\">&lt;?php<\/span>\n$ch = curl_init(<span class=\"hljs-string\">'https:\/\/example.com\/photo.jpg'<\/span>);\ncurl_setopt_array($ch, &#91;\n\u00a0 \u00a0 CURLOPT_RETURNTRANSFER =&gt; <span class=\"hljs-keyword\">true<\/span>,\n\u00a0 \u00a0 CURLOPT_FOLLOWLOCATION =&gt; <span class=\"hljs-keyword\">true<\/span>,\n\u00a0 \u00a0 CURLOPT_TIMEOUT =&gt; <span class=\"hljs-number\">5<\/span>,\n\u00a0 \u00a0 CURLOPT_RANGE =&gt; <span class=\"hljs-string\">'0-65535'<\/span> <span class=\"hljs-comment\">\/\/ partial download is often enough<\/span>\n]);\n$partial = curl_exec($ch);\ncurl_close($ch);\n\n$info = @getimagesizefromstring($partial);\n<span class=\"hljs-keyword\">if<\/span> ($info) {\n\u00a0 \u00a0 <span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">\"Dimensions: {$info&#91;0]}x{$info&#91;1]}\\n\"<\/span>;\n}\n<span class=\"hljs-meta\">?&gt;<\/span><\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\">5) Remote images: file size via HTTP HEAD<\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-5\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml shcb-wrap-lines\"><span class=\"php\"><span class=\"hljs-meta\">&lt;?php<\/span>\n$ch = curl_init(<span class=\"hljs-string\">'https:\/\/example.com\/photo.jpg'<\/span>);\ncurl_setopt_array($ch, &#91;\n\u00a0 \u00a0 CURLOPT_NOBODY =&gt; <span class=\"hljs-keyword\">true<\/span>,\n\u00a0 \u00a0 CURLOPT_RETURNTRANSFER =&gt; <span class=\"hljs-keyword\">true<\/span>,\n\u00a0 \u00a0 CURLOPT_FOLLOWLOCATION =&gt; <span class=\"hljs-keyword\">true<\/span>,\n\u00a0 \u00a0 CURLOPT_TIMEOUT =&gt; <span class=\"hljs-number\">5<\/span>\n]);\ncurl_exec($ch);\n$size = curl_getinfo($ch, CURLINFO_CONTENT_LENGTH_DOWNLOAD);\ncurl_close($ch);\n\n<span class=\"hljs-keyword\">if<\/span> ($size &gt;= <span class=\"hljs-number\">0<\/span>) {\n\u00a0 \u00a0 <span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">\"Remote file size: {$size} bytes\\n\"<\/span>;\n} <span class=\"hljs-keyword\">else<\/span> {\n\u00a0 \u00a0 <span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">\"Content-Length not provided. Consider a full GET as fallback.\\n\"<\/span>;\n}\n<span class=\"hljs-meta\">?&gt;<\/span><\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-5\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\">6) Large images: faster metadata with Imagick<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">For very large images or formats like TIFF or HEIC, Imagick can extract dimensions without decoding the full raster.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-6\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml shcb-wrap-lines\"><span class=\"php\"><span class=\"hljs-meta\">&lt;?php<\/span>\n$img = <span class=\"hljs-keyword\">new<\/span> Imagick();\n$img-&gt;pingImage($path); <span class=\"hljs-comment\">\/\/ fast metadata read<\/span>\n<span class=\"hljs-keyword\">echo<\/span> $img-&gt;getImageWidth() . <span class=\"hljs-string\">'x'<\/span> . $img-&gt;getImageHeight();\n<span class=\"hljs-meta\">?&gt;<\/span><\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-6\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\">7) Format considerations and optimization<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">If you plan to transform or convert after reading sizes, choose efficient formats. For web delivery, see <a href=\"https:\/\/cloudinary.com\/guides\/image-formats\/jpeg-vs-webp\">JPEG vs WebP<\/a>. You can also quickly convert assets like PNG to WebP using a tool such as <a href=\"https:\/\/cloudinary.com\/tools\/png-to-webp\">PNG to WebP<\/a>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Do the same with Cloud services<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">If your images live in the cloud, you can get dimensions and bytes from the upload response or through an API. For example, using the Cloudinary PHP SDK, the upload call returns width, height, bytes, and format. It also lets you deliver the right size on the fly and automate format selection.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-7\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml shcb-wrap-lines\"><span class=\"php\"><span class=\"hljs-meta\">&lt;?php<\/span>\n<span class=\"hljs-keyword\">use<\/span> <span class=\"hljs-title\">Cloudinary<\/span>\\<span class=\"hljs-title\">Configuration<\/span>\\<span class=\"hljs-title\">Configuration<\/span>;\n<span class=\"hljs-keyword\">use<\/span> <span class=\"hljs-title\">Cloudinary<\/span>\\<span class=\"hljs-title\">Api<\/span>\\<span class=\"hljs-title\">Upload<\/span>\\<span class=\"hljs-title\">UploadApi<\/span>;\n\nConfiguration::instance(&#91;\n\u00a0 <span class=\"hljs-string\">'cloud'<\/span> =&gt; &#91;<span class=\"hljs-string\">'cloud_name'<\/span> =&gt; <span class=\"hljs-string\">'demo'<\/span>, <span class=\"hljs-string\">'api_key'<\/span> =&gt; <span class=\"hljs-string\">'key'<\/span>, <span class=\"hljs-string\">'api_secret'<\/span> =&gt; <span class=\"hljs-string\">'secret'<\/span>],\n\u00a0 <span class=\"hljs-string\">'url'<\/span> \u00a0 =&gt; &#91;<span class=\"hljs-string\">'secure'<\/span> =&gt; <span class=\"hljs-keyword\">true<\/span>]\n]);\n\n$result = (<span class=\"hljs-keyword\">new<\/span> UploadApi())-&gt;upload(<span class=\"hljs-keyword\">__DIR__<\/span> . <span class=\"hljs-string\">'\/images\/photo.jpg'<\/span>, &#91;<span class=\"hljs-string\">'folder'<\/span> =&gt; <span class=\"hljs-string\">'samples'<\/span>]);\n$width\u00a0 = $result&#91;<span class=\"hljs-string\">'width'<\/span>];\n$height = $result&#91;<span class=\"hljs-string\">'height'<\/span>];\n$bytes\u00a0 = $result&#91;<span class=\"hljs-string\">'bytes'<\/span>];\n$format = $result&#91;<span class=\"hljs-string\">'format'<\/span>];\n\n<span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">\"Uploaded: {$width}x{$height}, {$bytes} bytes, format: {$format}\\n\"<\/span>;\n<span class=\"hljs-meta\">?&gt;<\/span><\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-7\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">After that, you can deliver resized or format-optimized variants by adding simple parameters to the delivery URL.&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">TL;DR<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Local files: use getimagesize for dimensions and filesize for bytes. Validate MIME with finfo.<\/li>\n\n\n\n<li>Remote files: getimagesize on URLs or fetch a small chunk and use getimagesizefromstring. Use HEAD to read Content-Length.<\/li>\n\n\n\n<li>Large images or exotic formats: Imagick pingImage is efficient.<\/li>\n\n\n\n<li>For cloud-managed workflows, upload once and read width, height, and bytes from the API. Consider modern formats based on guidance like <a href=\"https:\/\/cloudinary.com\/guides\/image-formats\/jpeg-vs-webp\">JPEG vs WebP<\/a>.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Learn More<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/cloudinary.com\/tools\/image-upscale\">Image Upscaling and Quality Enhancement<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/cloudinary.com\/tools\/jpg-to-webp\">JPG to WebP Converter<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/cloudinary.com\/tools\/compress-png\">Compress PNG<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/cloudinary.com\/guides\/digital-asset-management\/digital-asset-management\">Digital Asset Management Guide<\/a><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Ready to streamline image handling from upload to delivery? <a href=\"https:\/\/cloudinary.com\/users\/register_free\">Create a free Cloudinary account<\/a> and start automating transformations and metadata at scale.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Whether you are validating uploads, generating responsive thumbnails, or optimizing delivery, you often need to know the width, height, and file size of images in PHP. Below is a practical, community-style Q and A covering local files, remote URLs, and some pitfalls. Question: How to get the image size in PHP? I need to read [&hellip;]<\/p>\n","protected":false},"author":88,"featured_media":38825,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_cloudinary_featured_overwrite":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[1],"tags":[423],"class_list":["post-38824","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized","tag-questions"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v28.3 (Yoast SEO v28.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>How to get the image size in PHP?<\/title>\n<meta name=\"description\" content=\"Whether you are validating uploads, generating responsive thumbnails, or optimizing delivery, you often need to know the width, height, and file size of\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/cloudinary.com\/blog\/questions\/how-to-get-the-image-size-in-php\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to get the image size in PHP?\" \/>\n<meta property=\"og:description\" content=\"Whether you are validating uploads, generating responsive thumbnails, or optimizing delivery, you often need to know the width, height, and file size of\" \/>\n<meta property=\"og:url\" content=\"https:\/\/cloudinary.com\/blog\/questions\/how-to-get-the-image-size-in-php\" \/>\n<meta property=\"og:site_name\" content=\"Cloudinary Blog\" \/>\n<meta property=\"article:published_time\" content=\"2025-10-18T16:35:09+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-10-21T20:41:40+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1760804147\/how_to_get_the_image_size_in_php_featured_image\/how_to_get_the_image_size_in_php_featured_image.jpg?_i=AA\" \/>\n\t<meta property=\"og:image:width\" content=\"1999\" \/>\n\t<meta property=\"og:image:height\" content=\"1100\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"damjanantevski\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/cloudinary.com\\\/blog\\\/questions\\\/how-to-get-the-image-size-in-php#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/cloudinary.com\\\/blog\\\/questions\\\/how-to-get-the-image-size-in-php\"},\"author\":{\"name\":\"damjanantevski\",\"@id\":\"https:\\\/\\\/cloudinary.com\\\/blog\\\/#\\\/schema\\\/person\\\/43592e43c12520a1e867d456b1e8cf7e\"},\"headline\":\"How to get the image size in PHP?\",\"datePublished\":\"2025-10-18T16:35:09+00:00\",\"dateModified\":\"2025-10-21T20:41:40+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/cloudinary.com\\\/blog\\\/questions\\\/how-to-get-the-image-size-in-php\"},\"wordCount\":472,\"publisher\":{\"@id\":\"https:\\\/\\\/cloudinary.com\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/cloudinary.com\\\/blog\\\/questions\\\/how-to-get-the-image-size-in-php#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/res.cloudinary.com\\\/cloudinary-marketing\\\/images\\\/f_auto,q_auto\\\/v1760804147\\\/how_to_get_the_image_size_in_php_featured_image\\\/how_to_get_the_image_size_in_php_featured_image.jpg?_i=AA\",\"keywords\":[\"Questions\"],\"inLanguage\":\"en-US\",\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\\\/\\\/cloudinary.com\\\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/cloudinary.com\\\/blog\\\/questions\\\/how-to-get-the-image-size-in-php\",\"url\":\"https:\\\/\\\/cloudinary.com\\\/blog\\\/questions\\\/how-to-get-the-image-size-in-php\",\"name\":\"How to get the image size in PHP?\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/cloudinary.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/cloudinary.com\\\/blog\\\/questions\\\/how-to-get-the-image-size-in-php#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/cloudinary.com\\\/blog\\\/questions\\\/how-to-get-the-image-size-in-php#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/res.cloudinary.com\\\/cloudinary-marketing\\\/images\\\/f_auto,q_auto\\\/v1760804147\\\/how_to_get_the_image_size_in_php_featured_image\\\/how_to_get_the_image_size_in_php_featured_image.jpg?_i=AA\",\"datePublished\":\"2025-10-18T16:35:09+00:00\",\"dateModified\":\"2025-10-21T20:41:40+00:00\",\"description\":\"Whether you are validating uploads, generating responsive thumbnails, or optimizing delivery, you often need to know the width, height, and file size of\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/cloudinary.com\\\/blog\\\/questions\\\/how-to-get-the-image-size-in-php#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/cloudinary.com\\\/blog\\\/questions\\\/how-to-get-the-image-size-in-php\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/cloudinary.com\\\/blog\\\/questions\\\/how-to-get-the-image-size-in-php#primaryimage\",\"url\":\"https:\\\/\\\/res.cloudinary.com\\\/cloudinary-marketing\\\/images\\\/f_auto,q_auto\\\/v1760804147\\\/how_to_get_the_image_size_in_php_featured_image\\\/how_to_get_the_image_size_in_php_featured_image.jpg?_i=AA\",\"contentUrl\":\"https:\\\/\\\/res.cloudinary.com\\\/cloudinary-marketing\\\/images\\\/f_auto,q_auto\\\/v1760804147\\\/how_to_get_the_image_size_in_php_featured_image\\\/how_to_get_the_image_size_in_php_featured_image.jpg?_i=AA\",\"width\":1999,\"height\":1100},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/cloudinary.com\\\/blog\\\/questions\\\/how-to-get-the-image-size-in-php#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/cloudinary.com\\\/blog\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How to get the image size in PHP?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/cloudinary.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/cloudinary.com\\\/blog\\\/\",\"name\":\"Cloudinary Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/cloudinary.com\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/cloudinary.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/cloudinary.com\\\/blog\\\/#organization\",\"name\":\"Cloudinary Blog\",\"url\":\"https:\\\/\\\/cloudinary.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/cloudinary.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/res.cloudinary.com\\\/cloudinary-marketing\\\/images\\\/f_auto,q_auto\\\/v1649718331\\\/Web_Assets\\\/blog\\\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877\\\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877.png?_i=AA\",\"contentUrl\":\"https:\\\/\\\/res.cloudinary.com\\\/cloudinary-marketing\\\/images\\\/f_auto,q_auto\\\/v1649718331\\\/Web_Assets\\\/blog\\\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877\\\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877.png?_i=AA\",\"width\":312,\"height\":60,\"caption\":\"Cloudinary Blog\"},\"image\":{\"@id\":\"https:\\\/\\\/cloudinary.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/cloudinary.com\\\/blog\\\/#\\\/schema\\\/person\\\/43592e43c12520a1e867d456b1e8cf7e\",\"name\":\"damjanantevski\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3b40c995531fe4d510212a06c9d4fc666d2cb8efbfebc98a94191701accf4817?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3b40c995531fe4d510212a06c9d4fc666d2cb8efbfebc98a94191701accf4817?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3b40c995531fe4d510212a06c9d4fc666d2cb8efbfebc98a94191701accf4817?s=96&d=mm&r=g\",\"caption\":\"damjanantevski\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"How to get the image size in PHP?","description":"Whether you are validating uploads, generating responsive thumbnails, or optimizing delivery, you often need to know the width, height, and file size of","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/cloudinary.com\/blog\/questions\/how-to-get-the-image-size-in-php","og_locale":"en_US","og_type":"article","og_title":"How to get the image size in PHP?","og_description":"Whether you are validating uploads, generating responsive thumbnails, or optimizing delivery, you often need to know the width, height, and file size of","og_url":"https:\/\/cloudinary.com\/blog\/questions\/how-to-get-the-image-size-in-php","og_site_name":"Cloudinary Blog","article_published_time":"2025-10-18T16:35:09+00:00","article_modified_time":"2025-10-21T20:41:40+00:00","og_image":[{"width":1999,"height":1100,"url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1760804147\/how_to_get_the_image_size_in_php_featured_image\/how_to_get_the_image_size_in_php_featured_image.jpg?_i=AA","type":"image\/jpeg"}],"author":"damjanantevski","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/cloudinary.com\/blog\/questions\/how-to-get-the-image-size-in-php#article","isPartOf":{"@id":"https:\/\/cloudinary.com\/blog\/questions\/how-to-get-the-image-size-in-php"},"author":{"name":"damjanantevski","@id":"https:\/\/cloudinary.com\/blog\/#\/schema\/person\/43592e43c12520a1e867d456b1e8cf7e"},"headline":"How to get the image size in PHP?","datePublished":"2025-10-18T16:35:09+00:00","dateModified":"2025-10-21T20:41:40+00:00","mainEntityOfPage":{"@id":"https:\/\/cloudinary.com\/blog\/questions\/how-to-get-the-image-size-in-php"},"wordCount":472,"publisher":{"@id":"https:\/\/cloudinary.com\/blog\/#organization"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/questions\/how-to-get-the-image-size-in-php#primaryimage"},"thumbnailUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1760804147\/how_to_get_the_image_size_in_php_featured_image\/how_to_get_the_image_size_in_php_featured_image.jpg?_i=AA","keywords":["Questions"],"inLanguage":"en-US","copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/cloudinary.com\/#organization"}},{"@type":"WebPage","@id":"https:\/\/cloudinary.com\/blog\/questions\/how-to-get-the-image-size-in-php","url":"https:\/\/cloudinary.com\/blog\/questions\/how-to-get-the-image-size-in-php","name":"How to get the image size in PHP?","isPartOf":{"@id":"https:\/\/cloudinary.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/cloudinary.com\/blog\/questions\/how-to-get-the-image-size-in-php#primaryimage"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/questions\/how-to-get-the-image-size-in-php#primaryimage"},"thumbnailUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1760804147\/how_to_get_the_image_size_in_php_featured_image\/how_to_get_the_image_size_in_php_featured_image.jpg?_i=AA","datePublished":"2025-10-18T16:35:09+00:00","dateModified":"2025-10-21T20:41:40+00:00","description":"Whether you are validating uploads, generating responsive thumbnails, or optimizing delivery, you often need to know the width, height, and file size of","breadcrumb":{"@id":"https:\/\/cloudinary.com\/blog\/questions\/how-to-get-the-image-size-in-php#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/cloudinary.com\/blog\/questions\/how-to-get-the-image-size-in-php"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cloudinary.com\/blog\/questions\/how-to-get-the-image-size-in-php#primaryimage","url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1760804147\/how_to_get_the_image_size_in_php_featured_image\/how_to_get_the_image_size_in_php_featured_image.jpg?_i=AA","contentUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1760804147\/how_to_get_the_image_size_in_php_featured_image\/how_to_get_the_image_size_in_php_featured_image.jpg?_i=AA","width":1999,"height":1100},{"@type":"BreadcrumbList","@id":"https:\/\/cloudinary.com\/blog\/questions\/how-to-get-the-image-size-in-php#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/cloudinary.com\/blog"},{"@type":"ListItem","position":2,"name":"How to get the image size in PHP?"}]},{"@type":"WebSite","@id":"https:\/\/cloudinary.com\/blog\/#website","url":"https:\/\/cloudinary.com\/blog\/","name":"Cloudinary Blog","description":"","publisher":{"@id":"https:\/\/cloudinary.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/cloudinary.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/cloudinary.com\/blog\/#organization","name":"Cloudinary Blog","url":"https:\/\/cloudinary.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cloudinary.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718331\/Web_Assets\/blog\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877.png?_i=AA","contentUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718331\/Web_Assets\/blog\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877.png?_i=AA","width":312,"height":60,"caption":"Cloudinary Blog"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/cloudinary.com\/blog\/#\/schema\/person\/43592e43c12520a1e867d456b1e8cf7e","name":"damjanantevski","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/3b40c995531fe4d510212a06c9d4fc666d2cb8efbfebc98a94191701accf4817?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/3b40c995531fe4d510212a06c9d4fc666d2cb8efbfebc98a94191701accf4817?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/3b40c995531fe4d510212a06c9d4fc666d2cb8efbfebc98a94191701accf4817?s=96&d=mm&r=g","caption":"damjanantevski"}}]}},"parsely":{"version":"1.1.0","canonical_url":"https:\/\/cloudinary.com\/blog\/questions\/how-to-get-the-image-size-in-php","meta":{"@context":"https:\/\/schema.org","@type":"NewsArticle","headline":"How to get the image size in PHP?","url":"https:\/\/cloudinary.com\/blog\/questions\/how-to-get-the-image-size-in-php","mainEntityOfPage":{"@type":"WebPage","@id":"https:\/\/cloudinary.com\/blog\/questions\/how-to-get-the-image-size-in-php"},"thumbnailUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1760804147\/how_to_get_the_image_size_in_php_featured_image\/how_to_get_the_image_size_in_php_featured_image.jpg?_i=AA&w=150&h=150&crop=1","image":{"@type":"ImageObject","url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1760804147\/how_to_get_the_image_size_in_php_featured_image\/how_to_get_the_image_size_in_php_featured_image.jpg?_i=AA"},"articleSection":"Uncategorized","author":[{"@type":"Person","name":"damjanantevski"}],"creator":["damjanantevski"],"publisher":{"@type":"Organization","name":"Cloudinary Blog","logo":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/v1649718331\/Web_Assets\/blog\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877.png?_i=AA"},"keywords":["questions"],"dateCreated":"2025-10-18T16:35:09Z","datePublished":"2025-10-18T16:35:09Z","dateModified":"2025-10-21T20:41:40Z"},"rendered":"<meta name=\"parsely-title\" content=\"How to get the image size in PHP?\" \/>\n<meta name=\"parsely-link\" content=\"https:\/\/cloudinary.com\/blog\/questions\/how-to-get-the-image-size-in-php\" \/>\n<meta name=\"parsely-type\" content=\"post\" \/>\n<meta name=\"parsely-image-url\" content=\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1760804147\/how_to_get_the_image_size_in_php_featured_image\/how_to_get_the_image_size_in_php_featured_image.jpg?_i=AA&w=150&amp;h=150&amp;crop=1\" \/>\n<meta name=\"parsely-pub-date\" content=\"2025-10-18T16:35:09Z\" \/>\n<meta name=\"parsely-section\" content=\"Uncategorized\" \/>\n<meta name=\"parsely-tags\" content=\"questions\" \/>\n<meta name=\"parsely-author\" content=\"damjanantevski\" \/>","tracker_url":"https:\/\/cdn.parsely.com\/keys\/cloudinary.com\/p.js"},"jetpack_featured_media_url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1760804147\/how_to_get_the_image_size_in_php_featured_image\/how_to_get_the_image_size_in_php_featured_image.jpg?_i=AA","_links":{"self":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/38824","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/users\/88"}],"replies":[{"embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/comments?post=38824"}],"version-history":[{"count":1,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/38824\/revisions"}],"predecessor-version":[{"id":38826,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/38824\/revisions\/38826"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/media\/38825"}],"wp:attachment":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/media?parent=38824"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/categories?post=38824"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/tags?post=38824"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}