{"id":39226,"date":"2025-11-09T03:57:21","date_gmt":"2025-11-09T11:57:21","guid":{"rendered":"https:\/\/cloudinary.com\/blog\/?p=39226"},"modified":"2026-03-15T12:54:25","modified_gmt":"2026-03-15T19:54:25","slug":"what-technique-is-used-to-hide-part-of-an-image-without-removing-it","status":"publish","type":"post","link":"https:\/\/cloudinary.com\/blog\/questions\/what-technique-is-used-to-hide-part-of-an-image-without-removing-it","title":{"rendered":"What technique is used to hide part of an image without removing it?"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">If you have ever needed to reveal a portion of an image on hover, mask a product photo into a custom shape, or crop for layout while still keeping the full original intact, you are looking for a non-destructive approach. This is a common thread in front-end and design communities, since the underlying image often needs to be reused or re-framed later without quality loss.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Question:<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Hi all, quick design-dev question. I want to hide parts of an image for effects and layout, but keep the full original so I can change or animate reveals later. What technique is used to hide part of an image without removing it? Also, what are the typical ways to do this in CSS, SVG, Canvas, or in design tools, and how do I avoid permanently altering the asset?<\/em><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Answer:<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The techniques you are looking for are masking and clipping. Both are non-destructive, meaning the changes are able to be undone later. They visually hide pixels while preserving the source, so you can change or animate the reveal later.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Core concepts<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Clipping:<\/strong> Keeps only the part of the image that falls inside a path or shape. Pixels outside are hidden.<\/li>\n\n\n\n<li><strong>Masking: <\/strong>Uses an alpha or luminance map to control per-pixel visibility. White areas show, black hide, gray partially shows.<\/li>\n\n\n\n<li><strong>Non-destructive:<\/strong> The underlying image remains unchanged, so you can adjust or reuse it at any time.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">CSS approaches<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Great for UI, hover effects, and responsive layouts.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Quick framing with overflow<\/li>\n<\/ul>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css shcb-wrap-lines\"><span class=\"hljs-selector-class\">.frame<\/span> {\n\u00a0 <span class=\"hljs-attribute\">width<\/span>: <span class=\"hljs-number\">300px<\/span>;\n\u00a0 <span class=\"hljs-attribute\">height<\/span>: <span class=\"hljs-number\">180px<\/span>;\n\u00a0 <span class=\"hljs-attribute\">overflow<\/span>: hidden; \u00a0 \u00a0 \u00a0 <span class=\"hljs-comment\">\/* hides overflow without altering the image *\/<\/span>\n}\n<span class=\"hljs-selector-class\">.frame<\/span> <span class=\"hljs-selector-tag\">img<\/span> {\n\u00a0 <span class=\"hljs-attribute\">width<\/span>: <span class=\"hljs-number\">100%<\/span>;\n\u00a0 <span class=\"hljs-attribute\">object-fit<\/span>: cover;\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<ul class=\"wp-block-list\">\n<li>Shape clipping with clip-path<\/li>\n<\/ul>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css shcb-wrap-lines\"><span class=\"hljs-selector-class\">.hex<\/span> {\n\u00a0 <span class=\"hljs-attribute\">width<\/span>: <span class=\"hljs-number\">300px<\/span>;\n\u00a0 <span class=\"hljs-attribute\">height<\/span>: <span class=\"hljs-number\">300px<\/span>;\n\u00a0 <span class=\"hljs-attribute\">clip-path<\/span>: <span class=\"hljs-built_in\">polygon<\/span>(\n\u00a0 \u00a0 <span class=\"hljs-number\">25%<\/span> <span class=\"hljs-number\">6.7%<\/span>, <span class=\"hljs-number\">75%<\/span> <span class=\"hljs-number\">6.7%<\/span>, <span class=\"hljs-number\">100%<\/span> <span class=\"hljs-number\">50%<\/span>,\n\u00a0 \u00a0 <span class=\"hljs-number\">75%<\/span> <span class=\"hljs-number\">93.3%<\/span>, <span class=\"hljs-number\">25%<\/span> <span class=\"hljs-number\">93.3%<\/span>, <span class=\"hljs-number\">0%<\/span> <span class=\"hljs-number\">50%<\/span>\n\u00a0 );\n\u00a0 <span class=\"hljs-attribute\">overflow<\/span>: hidden;\n}\n<span class=\"hljs-selector-class\">.hex<\/span> <span class=\"hljs-selector-tag\">img<\/span> { <span class=\"hljs-attribute\">width<\/span>: <span class=\"hljs-number\">100%<\/span>; <span class=\"hljs-attribute\">height<\/span>: <span class=\"hljs-number\">100%<\/span>; <span class=\"hljs-attribute\">object-fit<\/span>: cover; }<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<ul class=\"wp-block-list\">\n<li>Masking with mask-image<\/li>\n<\/ul>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css shcb-wrap-lines\"><span class=\"hljs-selector-class\">.masked<\/span> {\n\u00a0 <span class=\"hljs-attribute\">width<\/span>: <span class=\"hljs-number\">320px<\/span>;\n\u00a0 <span class=\"hljs-attribute\">height<\/span>: <span class=\"hljs-number\">320px<\/span>;\n\u00a0 <span class=\"hljs-attribute\">-webkit-mask-image<\/span>: <span class=\"hljs-built_in\">radial-gradient<\/span>(circle at <span class=\"hljs-number\">50%<\/span> <span class=\"hljs-number\">50%<\/span>, #<span class=\"hljs-number\">000<\/span> <span class=\"hljs-number\">60%<\/span>, transparent <span class=\"hljs-number\">61%<\/span>);\n\u00a0 <span class=\"hljs-attribute\">mask-image<\/span>: <span class=\"hljs-built_in\">radial-gradient<\/span>(circle at <span class=\"hljs-number\">50%<\/span> <span class=\"hljs-number\">50%<\/span>, #<span class=\"hljs-number\">000<\/span> <span class=\"hljs-number\">60%<\/span>, transparent <span class=\"hljs-number\">61%<\/span>);\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Tip: Use PNG or SVG masks with transparency to get precise shapes and smooth edges. See background on <a href=\"https:\/\/cloudinary.com\/guides\/image-formats\/transparent-image-file-types\">transparent image file types<\/a>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">SVG approaches<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Ideal for vector-precise shapes, reusable symbols, and animations.<\/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=\"hljs-tag\">&lt;<span class=\"hljs-name\">svg<\/span> <span class=\"hljs-attr\">viewBox<\/span>=<span class=\"hljs-string\">\"0 0 400 300\"<\/span> <span class=\"hljs-attr\">width<\/span>=<span class=\"hljs-string\">\"400\"<\/span>&gt;<\/span>\n\u00a0 <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">defs<\/span>&gt;<\/span>\n\u00a0 \u00a0 <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">clipPath<\/span> <span class=\"hljs-attr\">id<\/span>=<span class=\"hljs-string\">\"cutout\"<\/span> <span class=\"hljs-attr\">clipPathUnits<\/span>=<span class=\"hljs-string\">\"objectBoundingBox\"<\/span>&gt;<\/span>\n\u00a0 \u00a0 \u00a0 <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">circle<\/span> <span class=\"hljs-attr\">cx<\/span>=<span class=\"hljs-string\">\"0.5\"<\/span> <span class=\"hljs-attr\">cy<\/span>=<span class=\"hljs-string\">\"0.5\"<\/span> <span class=\"hljs-attr\">r<\/span>=<span class=\"hljs-string\">\"0.45\"<\/span> \/&gt;<\/span>\n\u00a0 \u00a0 <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">clipPath<\/span>&gt;<\/span>\n\n\u00a0 \u00a0 <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">mask<\/span> <span class=\"hljs-attr\">id<\/span>=<span class=\"hljs-string\">\"fadeMask\"<\/span>&gt;<\/span>\n\u00a0 \u00a0 \u00a0 <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">linearGradient<\/span> <span class=\"hljs-attr\">id<\/span>=<span class=\"hljs-string\">\"g\"<\/span> <span class=\"hljs-attr\">gradientTransform<\/span>=<span class=\"hljs-string\">\"rotate(90)\"<\/span>&gt;<\/span>\n\u00a0 \u00a0 \u00a0 \u00a0 <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">stop<\/span> <span class=\"hljs-attr\">offset<\/span>=<span class=\"hljs-string\">\"0%\"<\/span> <span class=\"hljs-attr\">stop-color<\/span>=<span class=\"hljs-string\">\"white\"<\/span>\/&gt;<\/span>\n\u00a0 \u00a0 \u00a0 \u00a0 <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">stop<\/span> <span class=\"hljs-attr\">offset<\/span>=<span class=\"hljs-string\">\"100%\"<\/span> <span class=\"hljs-attr\">stop-color<\/span>=<span class=\"hljs-string\">\"black\"<\/span>\/&gt;<\/span>\n\u00a0 \u00a0 \u00a0 <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">linearGradient<\/span>&gt;<\/span>\n\u00a0 \u00a0 \u00a0 <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">rect<\/span> <span class=\"hljs-attr\">width<\/span>=<span class=\"hljs-string\">\"100%\"<\/span> <span class=\"hljs-attr\">height<\/span>=<span class=\"hljs-string\">\"100%\"<\/span> <span class=\"hljs-attr\">fill<\/span>=<span class=\"hljs-string\">\"url(#g)\"<\/span>\/&gt;<\/span>\n\u00a0 \u00a0 <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">mask<\/span>&gt;<\/span>\n\u00a0 <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">defs<\/span>&gt;<\/span>\n\n\u00a0 <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">image<\/span> <span class=\"hljs-attr\">href<\/span>=<span class=\"hljs-string\">\"photo.jpg\"<\/span> <span class=\"hljs-attr\">width<\/span>=<span class=\"hljs-string\">\"400\"<\/span> <span class=\"hljs-attr\">height<\/span>=<span class=\"hljs-string\">\"300\"<\/span> <span class=\"hljs-attr\">clip-path<\/span>=<span class=\"hljs-string\">\"url(#cutout)\"<\/span>\/&gt;<\/span>\n\u00a0 <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">image<\/span> <span class=\"hljs-attr\">href<\/span>=<span class=\"hljs-string\">\"photo.jpg\"<\/span> <span class=\"hljs-attr\">width<\/span>=<span class=\"hljs-string\">\"400\"<\/span> <span class=\"hljs-attr\">height<\/span>=<span class=\"hljs-string\">\"300\"<\/span> <span class=\"hljs-attr\">mask<\/span>=<span class=\"hljs-string\">\"url(#fadeMask)\"<\/span>\/&gt;<\/span>\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">svg<\/span>&gt;<\/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\">Canvas approach<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Useful when you need programmatic masking in a drawing pipeline.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-5\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript shcb-wrap-lines\"><span class=\"hljs-keyword\">const<\/span> canvas = <span class=\"hljs-built_in\">document<\/span>.getElementById(<span class=\"hljs-string\">'c'<\/span>);\n<span class=\"hljs-keyword\">const<\/span> ctx = canvas.getContext(<span class=\"hljs-string\">'2d'<\/span>);\n<span class=\"hljs-keyword\">const<\/span> img = <span class=\"hljs-keyword\">new<\/span> Image();\nimg.src = <span class=\"hljs-string\">'photo.jpg'<\/span>;\nimg.onload = <span class=\"hljs-function\"><span class=\"hljs-params\">()<\/span> =&gt;<\/span> {\n\u00a0 ctx.drawImage(img, <span class=\"hljs-number\">0<\/span>, <span class=\"hljs-number\">0<\/span>, canvas.width, canvas.height);\n\n\u00a0 <span class=\"hljs-comment\">\/\/ Create mask<\/span>\n\u00a0 ctx.globalCompositeOperation = <span class=\"hljs-string\">'destination-in'<\/span>;\n\u00a0 <span class=\"hljs-keyword\">const<\/span> mask = ctx.createRadialGradient(<span class=\"hljs-number\">160<\/span>, <span class=\"hljs-number\">120<\/span>, <span class=\"hljs-number\">80<\/span>, <span class=\"hljs-number\">160<\/span>, <span class=\"hljs-number\">120<\/span>, <span class=\"hljs-number\">160<\/span>);\n\u00a0 mask.addColorStop(<span class=\"hljs-number\">0<\/span>, <span class=\"hljs-string\">'rgba(0,0,0,1)'<\/span>);\n\u00a0 mask.addColorStop(<span class=\"hljs-number\">1<\/span>, <span class=\"hljs-string\">'rgba(0,0,0,0)'<\/span>);\n\u00a0 ctx.fillStyle = mask;\n\u00a0 ctx.fillRect(<span class=\"hljs-number\">0<\/span>, <span class=\"hljs-number\">0<\/span>, canvas.width, canvas.height);\n\n\u00a0 <span class=\"hljs-comment\">\/\/ Reset for future drawing<\/span>\n\u00a0 ctx.globalCompositeOperation = <span class=\"hljs-string\">'source-over'<\/span>;\n};<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-5\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\">Performance and quality tips<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Prefer vector-based clip-path or SVG for sharp, scalable shapes.<\/li>\n\n\n\n<li>PNG or SVG masks are ideal when you need smooth alpha transitions.<\/li>\n\n\n\n<li>If you export masks, keep them optimized. Complex paths and large PNG masks can impact rendering time.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Doing this with Cloudinary workflows<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">You can also handle masking and clipping non-destructively at delivery time. For example, serve a circular version of a <a href=\"https:\/\/cloudinary.com\/tools\/square-crop-image\">square image<\/a> using a URL-based transformation. Your original remains unchanged and derived versions are generated on request. See the concept of <a href=\"https:\/\/cloudinary.com\/glossary\/image-url\">image URLs for transformations<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For shape-driven presentation, you can overlay a mask or frame, or combine base image plus shape using compositing. Here is a guide that covers layering fundamentals: <a href=\"https:\/\/cloudinary.com\/guides\/image-effects\/how-to-overlay-a-picture-on-a-picture\">how to overlay a picture on a picture<\/a>. When using alpha-transparent PNG or SVG assets as overlays, you effectively achieve non-destructive masking at delivery time. Choosing the right format for the mask matters, so review <a href=\"https:\/\/cloudinary.com\/guides\/image-formats\/transparent-image-file-types\">transparent image file types<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Example idea using a URL transformation as a code snippet:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-6\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php shcb-wrap-lines\"><span class=\"hljs-comment\">\/\/ Circle crop derivative while keeping the original untouched<\/span>\n<span class=\"hljs-comment\">\/\/ (Example URL pattern for illustration)<\/span>\nhttps:<span class=\"hljs-comment\">\/\/res.cloudinary.com\/demo\/image\/upload\/w_600,h_600,c_thumb,r_max\/sample.jpg<\/span>\n\n<span class=\"hljs-comment\">\/\/ Overlay a PNG mask that has transparent center and opaque outer region<\/span>\n<span class=\"hljs-comment\">\/\/ The alpha channel hides parts of the base image<\/span>\nhttps:<span class=\"hljs-comment\">\/\/res.cloudinary.com\/demo\/image\/upload\/l_masks:rounded_frame.png,fl_layer_apply\/sample.jpg<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-6\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\">TL;DR<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Use clip-path or mask-image in CSS for layout-integrated, non-destructive hiding.<\/li>\n\n\n\n<li>Use SVG clipPath or mask for precision shapes and scalable effects.<\/li>\n\n\n\n<li>Use Canvas compositing for dynamic, programmatic masking.<\/li>\n\n\n\n<li>Use design-tool masks for editable, non-destructive edits in source files.<\/li>\n\n\n\n<li>Deliver masked variants via URL-based transformations without altering the original.<\/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\/background-remover\">Background Remover<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/cloudinary.com\/tools\/png-to-webp\">PNG to WebP Converter<\/a><\/li>\n\n\n\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\/image-to-png\">Image to PNG Converter<\/a><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Ready to build non-destructive, flexible image workflows with on-the-fly transformations and delivery? <a href=\"https:\/\/cloudinary.com\/users\/register_free\">Create your free Cloudinary account<\/a> and start transforming images by URL or SDK today.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>If you have ever needed to reveal a portion of an image on hover, mask a product photo into a custom shape, or crop for layout while still keeping the full original intact, you are looking for a non-destructive approach. This is a common thread in front-end and design communities, since the underlying image often [&hellip;]<\/p>\n","protected":false},"author":88,"featured_media":39227,"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-39226","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>What technique is used to hide part of an image without removing it?<\/title>\n<meta name=\"description\" content=\"If you have ever needed to reveal a portion of an image on hover, mask a product photo into a custom shape, or crop for layout while still keeping the\" \/>\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\/what-technique-is-used-to-hide-part-of-an-image-without-removing-it\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"What technique is used to hide part of an image without removing it?\" \/>\n<meta property=\"og:description\" content=\"If you have ever needed to reveal a portion of an image on hover, mask a product photo into a custom shape, or crop for layout while still keeping the\" \/>\n<meta property=\"og:url\" content=\"https:\/\/cloudinary.com\/blog\/questions\/what-technique-is-used-to-hide-part-of-an-image-without-removing-it\" \/>\n<meta property=\"og:site_name\" content=\"Cloudinary Blog\" \/>\n<meta property=\"article:published_time\" content=\"2025-11-09T11:57:21+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-03-15T19:54:25+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1762689423\/What_technique_is_used_to_hide_part_of_an_image_without_removing_it_featured_image\/What_technique_is_used_to_hide_part_of_an_image_without_removing_it_featured_image.jpg?_i=AA\" \/>\n\t<meta property=\"og:image:width\" content=\"2000\" \/>\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\\\/what-technique-is-used-to-hide-part-of-an-image-without-removing-it#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/cloudinary.com\\\/blog\\\/questions\\\/what-technique-is-used-to-hide-part-of-an-image-without-removing-it\"},\"author\":{\"name\":\"damjanantevski\",\"@id\":\"https:\\\/\\\/cloudinary.com\\\/blog\\\/#\\\/schema\\\/person\\\/43592e43c12520a1e867d456b1e8cf7e\"},\"headline\":\"What technique is used to hide part of an image without removing it?\",\"datePublished\":\"2025-11-09T11:57:21+00:00\",\"dateModified\":\"2026-03-15T19:54:25+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/cloudinary.com\\\/blog\\\/questions\\\/what-technique-is-used-to-hide-part-of-an-image-without-removing-it\"},\"wordCount\":568,\"publisher\":{\"@id\":\"https:\\\/\\\/cloudinary.com\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/cloudinary.com\\\/blog\\\/questions\\\/what-technique-is-used-to-hide-part-of-an-image-without-removing-it#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/res.cloudinary.com\\\/cloudinary-marketing\\\/images\\\/f_auto,q_auto\\\/v1762689423\\\/What_technique_is_used_to_hide_part_of_an_image_without_removing_it_featured_image\\\/What_technique_is_used_to_hide_part_of_an_image_without_removing_it_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\\\/what-technique-is-used-to-hide-part-of-an-image-without-removing-it\",\"url\":\"https:\\\/\\\/cloudinary.com\\\/blog\\\/questions\\\/what-technique-is-used-to-hide-part-of-an-image-without-removing-it\",\"name\":\"What technique is used to hide part of an image without removing it?\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/cloudinary.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/cloudinary.com\\\/blog\\\/questions\\\/what-technique-is-used-to-hide-part-of-an-image-without-removing-it#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/cloudinary.com\\\/blog\\\/questions\\\/what-technique-is-used-to-hide-part-of-an-image-without-removing-it#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/res.cloudinary.com\\\/cloudinary-marketing\\\/images\\\/f_auto,q_auto\\\/v1762689423\\\/What_technique_is_used_to_hide_part_of_an_image_without_removing_it_featured_image\\\/What_technique_is_used_to_hide_part_of_an_image_without_removing_it_featured_image.jpg?_i=AA\",\"datePublished\":\"2025-11-09T11:57:21+00:00\",\"dateModified\":\"2026-03-15T19:54:25+00:00\",\"description\":\"If you have ever needed to reveal a portion of an image on hover, mask a product photo into a custom shape, or crop for layout while still keeping the\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/cloudinary.com\\\/blog\\\/questions\\\/what-technique-is-used-to-hide-part-of-an-image-without-removing-it#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/cloudinary.com\\\/blog\\\/questions\\\/what-technique-is-used-to-hide-part-of-an-image-without-removing-it\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/cloudinary.com\\\/blog\\\/questions\\\/what-technique-is-used-to-hide-part-of-an-image-without-removing-it#primaryimage\",\"url\":\"https:\\\/\\\/res.cloudinary.com\\\/cloudinary-marketing\\\/images\\\/f_auto,q_auto\\\/v1762689423\\\/What_technique_is_used_to_hide_part_of_an_image_without_removing_it_featured_image\\\/What_technique_is_used_to_hide_part_of_an_image_without_removing_it_featured_image.jpg?_i=AA\",\"contentUrl\":\"https:\\\/\\\/res.cloudinary.com\\\/cloudinary-marketing\\\/images\\\/f_auto,q_auto\\\/v1762689423\\\/What_technique_is_used_to_hide_part_of_an_image_without_removing_it_featured_image\\\/What_technique_is_used_to_hide_part_of_an_image_without_removing_it_featured_image.jpg?_i=AA\",\"width\":2000,\"height\":1100},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/cloudinary.com\\\/blog\\\/questions\\\/what-technique-is-used-to-hide-part-of-an-image-without-removing-it#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/cloudinary.com\\\/blog\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"What technique is used to hide part of an image without removing it?\"}]},{\"@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":"What technique is used to hide part of an image without removing it?","description":"If you have ever needed to reveal a portion of an image on hover, mask a product photo into a custom shape, or crop for layout while still keeping the","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\/what-technique-is-used-to-hide-part-of-an-image-without-removing-it","og_locale":"en_US","og_type":"article","og_title":"What technique is used to hide part of an image without removing it?","og_description":"If you have ever needed to reveal a portion of an image on hover, mask a product photo into a custom shape, or crop for layout while still keeping the","og_url":"https:\/\/cloudinary.com\/blog\/questions\/what-technique-is-used-to-hide-part-of-an-image-without-removing-it","og_site_name":"Cloudinary Blog","article_published_time":"2025-11-09T11:57:21+00:00","article_modified_time":"2026-03-15T19:54:25+00:00","og_image":[{"width":2000,"height":1100,"url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1762689423\/What_technique_is_used_to_hide_part_of_an_image_without_removing_it_featured_image\/What_technique_is_used_to_hide_part_of_an_image_without_removing_it_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\/what-technique-is-used-to-hide-part-of-an-image-without-removing-it#article","isPartOf":{"@id":"https:\/\/cloudinary.com\/blog\/questions\/what-technique-is-used-to-hide-part-of-an-image-without-removing-it"},"author":{"name":"damjanantevski","@id":"https:\/\/cloudinary.com\/blog\/#\/schema\/person\/43592e43c12520a1e867d456b1e8cf7e"},"headline":"What technique is used to hide part of an image without removing it?","datePublished":"2025-11-09T11:57:21+00:00","dateModified":"2026-03-15T19:54:25+00:00","mainEntityOfPage":{"@id":"https:\/\/cloudinary.com\/blog\/questions\/what-technique-is-used-to-hide-part-of-an-image-without-removing-it"},"wordCount":568,"publisher":{"@id":"https:\/\/cloudinary.com\/blog\/#organization"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/questions\/what-technique-is-used-to-hide-part-of-an-image-without-removing-it#primaryimage"},"thumbnailUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1762689423\/What_technique_is_used_to_hide_part_of_an_image_without_removing_it_featured_image\/What_technique_is_used_to_hide_part_of_an_image_without_removing_it_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\/what-technique-is-used-to-hide-part-of-an-image-without-removing-it","url":"https:\/\/cloudinary.com\/blog\/questions\/what-technique-is-used-to-hide-part-of-an-image-without-removing-it","name":"What technique is used to hide part of an image without removing it?","isPartOf":{"@id":"https:\/\/cloudinary.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/cloudinary.com\/blog\/questions\/what-technique-is-used-to-hide-part-of-an-image-without-removing-it#primaryimage"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/questions\/what-technique-is-used-to-hide-part-of-an-image-without-removing-it#primaryimage"},"thumbnailUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1762689423\/What_technique_is_used_to_hide_part_of_an_image_without_removing_it_featured_image\/What_technique_is_used_to_hide_part_of_an_image_without_removing_it_featured_image.jpg?_i=AA","datePublished":"2025-11-09T11:57:21+00:00","dateModified":"2026-03-15T19:54:25+00:00","description":"If you have ever needed to reveal a portion of an image on hover, mask a product photo into a custom shape, or crop for layout while still keeping the","breadcrumb":{"@id":"https:\/\/cloudinary.com\/blog\/questions\/what-technique-is-used-to-hide-part-of-an-image-without-removing-it#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/cloudinary.com\/blog\/questions\/what-technique-is-used-to-hide-part-of-an-image-without-removing-it"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cloudinary.com\/blog\/questions\/what-technique-is-used-to-hide-part-of-an-image-without-removing-it#primaryimage","url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1762689423\/What_technique_is_used_to_hide_part_of_an_image_without_removing_it_featured_image\/What_technique_is_used_to_hide_part_of_an_image_without_removing_it_featured_image.jpg?_i=AA","contentUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1762689423\/What_technique_is_used_to_hide_part_of_an_image_without_removing_it_featured_image\/What_technique_is_used_to_hide_part_of_an_image_without_removing_it_featured_image.jpg?_i=AA","width":2000,"height":1100},{"@type":"BreadcrumbList","@id":"https:\/\/cloudinary.com\/blog\/questions\/what-technique-is-used-to-hide-part-of-an-image-without-removing-it#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/cloudinary.com\/blog"},{"@type":"ListItem","position":2,"name":"What technique is used to hide part of an image without removing it?"}]},{"@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\/what-technique-is-used-to-hide-part-of-an-image-without-removing-it","meta":{"@context":"https:\/\/schema.org","@type":"NewsArticle","headline":"What technique is used to hide part of an image without removing it?","url":"https:\/\/cloudinary.com\/blog\/questions\/what-technique-is-used-to-hide-part-of-an-image-without-removing-it","mainEntityOfPage":{"@type":"WebPage","@id":"https:\/\/cloudinary.com\/blog\/questions\/what-technique-is-used-to-hide-part-of-an-image-without-removing-it"},"thumbnailUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1762689423\/What_technique_is_used_to_hide_part_of_an_image_without_removing_it_featured_image\/What_technique_is_used_to_hide_part_of_an_image_without_removing_it_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\/v1762689423\/What_technique_is_used_to_hide_part_of_an_image_without_removing_it_featured_image\/What_technique_is_used_to_hide_part_of_an_image_without_removing_it_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-11-09T11:57:21Z","datePublished":"2025-11-09T11:57:21Z","dateModified":"2026-03-15T19:54:25Z"},"rendered":"<meta name=\"parsely-title\" content=\"What technique is used to hide part of an image without removing it?\" \/>\n<meta name=\"parsely-link\" content=\"https:\/\/cloudinary.com\/blog\/questions\/what-technique-is-used-to-hide-part-of-an-image-without-removing-it\" \/>\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\/v1762689423\/What_technique_is_used_to_hide_part_of_an_image_without_removing_it_featured_image\/What_technique_is_used_to_hide_part_of_an_image_without_removing_it_featured_image.jpg?_i=AA&w=150&amp;h=150&amp;crop=1\" \/>\n<meta name=\"parsely-pub-date\" content=\"2025-11-09T11:57:21Z\" \/>\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\/v1762689423\/What_technique_is_used_to_hide_part_of_an_image_without_removing_it_featured_image\/What_technique_is_used_to_hide_part_of_an_image_without_removing_it_featured_image.jpg?_i=AA","_links":{"self":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/39226","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=39226"}],"version-history":[{"count":2,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/39226\/revisions"}],"predecessor-version":[{"id":39879,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/39226\/revisions\/39879"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/media\/39227"}],"wp:attachment":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/media?parent=39226"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/categories?post=39226"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/tags?post=39226"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}