使用ColdFusion 10从底部和顶部裁剪图像

时间:2013-09-14 13:27:13

标签: coldfusion coldfusion-10 cfimage

我一直在尝试使用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">

例如,如果调整大小后图像高度为500px,则应再裁剪150px。更具体地说,从底部裁剪75px,从顶部裁剪75px。有可能吗?

1 个答案:

答案 0 :(得分:4)

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

如果输出参数,则可以看到yheight值已关闭。假设原始图片尺寸为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 );