簡體   English   中英

如何在不拉伸的情況下將圖像縮放到KonvaJS畫布?

[英]How to scale image to KonvaJS canvas without stretching?

我試圖在1080x1920畫布上顯示不同寬高比的圖像。 因此,當我嘗試顯示9:16圖像時,它會完美縮放,但如果縱橫比為4:3或3:4,則縮放圖像會延伸。

我想要做的是,如果縱橫比為3:4,縮放並在中心和切割邊緣顯示圖像為9:16。 (因此,如果原始寬度為1440,則僅顯示1080並在屏幕兩側留下180px。如果原始寬度為3024,則將其縮小至1440然后切割)

如果圖像不是肖像而是風景,將其顯示在中心並用一些顏色填充剩余空間。

我怎么能得到這個? KonvaJS提供了簡單的方法嗎?

沒有konvaJS沒有提供解決方法,您需要使用自己的邏輯將圖像定位在中心以獲得不同的分辨率。

我使用邏輯來查找符合我個人項目中提供的尺寸的圖像分辨率。 檢查它是否有幫助。

function getScaledImageCoordinates(
    containerWidth,
    containerHeigh,
    widt,
    height,
) {
    var widthRatio = (containerWidth) / width,
        heightRatio = (containerHeight) / height
    var bestRatio = Math.min(widthRatio, heightRatio)
    var newWidth = width * bestRatio,
        newHeight = height * bestRatio
    return {newWidth, newHeight}
} 

您可以找到適合您容器的圖像分辨率(例如1080x1920),然后將圖像居中放置在Konva Stage上

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM