3

ColdFusion 10 を使用して、プログラムで画像のサイズ変更とトリミングを試みてきました。プロセスで同じ幅を維持しながら、下と上から画像を均等にトリミングすることができないということです。

これが私が現在持っているもので、ほんの数行です。

    <cfimage source="images/test/airateapple.png" name="myImage" overwrite="yes">

    <cfif ImageGetWidth(myImage) gte 1024>
        <cfset ImageSetAntialiasing(myImage,"on")>
        <cfset ImageScaleToFit(myImage,800,"","mediumquality")>
        <cfif ImageGetHeight(myImage) gt 350> 
            <cfset sizeToCrop= ImageGetHeight(myImage) - 350>
            <cfset ImageCrop(myImage,0, sizeToCrop
                               , ImageGetWidth(myImage)
                               , ImageGetHeight(myImage) )>
        </cfif>

        <cfset finalImage=myImage>
    </cfif>

    <!--- Display the modified image in a browser. --->
    <cfimage source="#finalImage#" action="writeToBrowser">

たとえば、サイズ変更後に画像の高さが 500 ピクセルの場合、さらに 150 ピクセルをトリミングする必要があります。具体的には、下から 75px、上から 75px をトリミングします。出来ますか?

4

1 に答える 1

4
<cfset sizeToCrop= ImageGetHeight(myImage) - 350>
<cfset ImageCrop(myImage, 0 
                     , #sizeToCrop# 
                     , #ImageGetWidth(myImage)#
                     , #ImageGetHeight(myImage)#
                   )>

パラメータを出力すると、yと のheight値がオフになっていることがわかります。元の画像の寸法が500px x 500px. 現在、クロップの開始位置が低すぎ (つまり) 、目的の高さ (つまり ) ではなく元のy=150px高さを使用しています。350px

       // current code (wrong)
       ImageCrop(myImage, 0 , 150 , 500 , 500 )

y=75画像の中心をつかむには、 (余分な高さ / 2)でトリミングを開始する必要があります。次に、元の高さではなく、目的の高さ (つまり350px) を使用します。

       // ImageCrop( img, x, y, width, height )
       yPosition  = (originalHeight - desiredHeight) / 2;
       ImageCrop(myImage, 0, yPosition, originalWidth, desiredHeight );
于 2013-09-14T19:33:48.743 に答える