Используйте изображение как маску, затем вы можете добавить фон в качестве окраски:
.box {
display: inline-block;
width: 200px;
background:linear-gradient(45deg,transparent,orange);
-webkit-mask:url(https://i.ibb.co/PNtkhqg/iii.png) center/contain no-repeat;
mask:url(https://i.ibb.co/PNtkhqg/iii.png) center/contain no-repeat;
}
img {
display: block;
width: 100%;
opacity:0; /* no need to show the original image, it will simply define the size */
}
body {
background: grey;
}
<div class="box"><img src="https://i.ibb.co/PNtkhqg/iii.png"></div>
Более упрощенный код на случай, если вы знаете соотношение изображения:
.box {
display: inline-block;
width: 200px;
background:linear-gradient(45deg,transparent,orange);
-webkit-mask:url(https://i.ibb.co/PNtkhqg/iii.png) center/contain no-repeat;
mask:url(https://i.ibb.co/PNtkhqg/iii.png) center/contain no-repeat;
}
.box::before {
content:"";
display:block;
padding-top:100%;
}
body {
background: grey;
}
<div class="box"></div>
Также так, если вы хотите, чтобы изображение оставалось видимым:
.box {
display: inline-block;
width: 200px;
position:relative;
}
.box::after {
content:"";
position:absolute;
top:0;
left:0;
right:0;
bottom:0;
background:linear-gradient(45deg,transparent,orange);
-webkit-mask:url(https://i.ibb.co/PNtkhqg/iii.png) center/contain no-repeat;
mask:url(https://i.ibb.co/PNtkhqg/iii.png) center/contain no-repeat;
}
img {
display: block;
width: 100%;
}
body {
background: grey;
}
<div class="box"><img src="https://i.ibb.co/PNtkhqg/iii.png"></div>
И с уловкой соотношения
.box {
display: inline-block;
width: 200px;
background:
linear-gradient(45deg,transparent,orange),
url(https://i.ibb.co/PNtkhqg/iii.png) center/contain no-repeat;
-webkit-mask:url(https://i.ibb.co/PNtkhqg/iii.png) center/contain no-repeat;
mask:url(https://i.ibb.co/PNtkhqg/iii.png) center/contain no-repeat;
}
.box::after {
content:"";
display:inline-block;
padding-top:100%;
}
img {
display: block;
width: 100%;
}
body {
background: grey;
}
<div class="box"></div>