1
0
mirror of https://github.com/matrix-org/matrix-react-sdk.git synced 2025-11-04 11:51:45 +03:00

Improve image drawing fill strategy

This commit is contained in:
Germain Souquet
2021-06-25 09:36:12 +01:00
parent 652ad3617d
commit e628cac06b
2 changed files with 18 additions and 7 deletions

View File

@@ -37,16 +37,28 @@ export default class BackdropPanel extends React.PureComponent<IProps> {
const imageHeight = (backgroundImage as ImageBitmap).height
|| (backgroundImage as HTMLImageElement).naturalHeight;
const destinationX = width - imageWidth;
const destinationY = height - imageHeight;
const contentRatio = imageWidth / imageHeight;
const containerRatio = width / height;
let resultHeight;
let resultWidth;
if (contentRatio > containerRatio) {
resultHeight = height;
resultWidth = height * contentRatio;
} else {
resultWidth = width;
resultHeight = width / contentRatio;
}
const x = (width - resultWidth) / 2;
const y = (height - resultHeight) / 2;
this.ctx.filter = `blur(${this.props.blur})`;
this.ctx.drawImage(
backgroundImage,
Math.min(destinationX, 0),
Math.min(destinationY, 0),
Math.max(width, imageWidth),
Math.max(height, imageHeight),
x,
y,
resultWidth,
resultHeight,
);
}