Welcome!

You will be redirected in 30 seconds or close now.

ColdFusion Authors: Yakov Fain, Jeremy Geelan, Maureen O'Gara, Nancy Y. Nee, Tad Anderson

Related Topics: ColdFusion, SYS-CON MEDIA

ColdFusion: Article

CFImage Functionality is Just Awesome!

Integration into Tag and Scripting Language is a Welcome Development

Finally, ColdFusion 8 has incorporated image manipulation directly into the ColdFusion tag and scripting language. No more are we, as developers, chained to third-party products.

These products, while excellent in quality, just mean adding one more level of complexity to any application that requires server-side image manipulation. Now, with CFImage and an abundance of image-related functions, ColdFusion has done to image manipulation what it has done to almost every other aspect of Web applications development - it has made it simple.

Due to the wide array of image functionality in ColdFusion 8, I am going to try and break this tutorial up into several small and manageable parts. The first part will cover basic reading and writing of images using CFImage and the related image manipulation functions. But, before we get into that, let's just quickly touch upon these new features as a whole.

ColdFusion 8 has given us CFImage. CFImage provides us with tag-based access to only a small subset of the image functionality including:

  • Retrieving information about an image
  • Reading an image into memory
  • Resizing an image
  • Rotating an image
  • Adding a border to an image
  • Converting an image from one file format to another
  • Creating a CAPTCHA image
  • Writing an image to a file
  • Writing an image to the browser

    In addition to the CFImage tag, ColdFusion has introduced dozens of new image manipulation functions including:

     

  • ImageAddBorder()
  • ImageBlur()
  • ImageClearRect()
  • ImageCopy()
  • ImageCrop()
  • ImageDrawArc()
  • ImageDrawBeveledRect()
  • ImageDrawCubicCurve()
  • ImageDrawLine()
  • ImageDrawLines()
  • ImageDrawOval()
  • ImageDrawPoint()
  • ImageDrawQuadraticCurve()
  • ImageDrawRect()
  • ImageGetEXIFTag()
  • ImageGetHeight()
  • ImageGetIPTCTag()
  • ImageGetWidth()
  • ImageGrayscale()
  • ImageInfo()
  • ImageNegative()
  • ImageNew()
  • ImageOverlay()
  • ImagePaste()
  • ImageRead()
  • ImageReadBase64()
  • ImageResize()
  • ImageRotate()
  • ImageRotateDrawingAxis()
  • ImageScaleToFit()
  • ImageSetAntialiasing()

The ColdFusion 8 CFImage tag and the image-related functions all deal with a new ColdFusion object:

coldfusion.image.Image

Most of you are not going to care about this one all that much, but for those of you who are interested in the underlying Java methods of the coldfusion.image.Image object, I have listed them below (skip past this if you have no idea what I'm talking about). Please note that any underlying methods of the actual Java/ColdFusion objects are found by gathering object metadata and through reflection; none of these methods are documented or officially supported. If you choose to use them, you do so at your own risk and discretion.

  • addBorder( int, java.lang.String, java.lang.String ) - returns: void
  • blur( int ) - returns: void
  • brighten() - returns: void
  • clearRect( int, int, int, int ) - returns: void
  • copyArea( int, int, int, int ) - returns: coldfusion.image.Image
  • copyArea( int, int, int, int, int, int ) - returns: coldfusion.image.Image
  • crop( float, float, float, float ) - returns: void
  • draw3DRect( int, int, int, int, boolean, boolean ) - returns: void
  • drawArc( int, int, int, int, int, int, boolean ) - returns: void
  • drawCubicCurve( double, double, double, double, double, double, double, double ) - returns: void
  • drawLine( int, int, int, int ) - returns: void
  • drawLines( [I, [I, boolean, boolean ) - returns: void
  • drawOval( int, int, int, int, boolean ) - returns: void
  • drawPoint( int, int ) - returns: void
  • drawQuadraticCurve( double, double, double, double, double, double ) - returns: void
  • drawRect( int, int, int, int, boolean ) - returns: void
  • drawRoundRect( int, int, int, int, int, int, boolean ) - returns: void
  • drawString( java.lang.String, int, int, coldfusion.runtime.Struct ) - returns: void
  • flip( java.lang.String ) - returns: void
  • getBase64String( java.lang.String ) - returns: java.lang.String
  • getClass() - returns: java.lang.Class
  • getColor( java.lang.String ) - returns: java.awt.Color
  • getCurrentGraphics() - returns: java.awt.Graphics2D
  • getCurrentImage() - returns: java.awt.image.BufferedImage
  • getExifMetadata( javax.servlet.jsp.PageContext )- returns: coldfusion.runtime.Struct
  • getExifTag( java.lang.String, javax.servlet.jsp.PageContext ) - returns: java.lang.String
  • getHeight() - returns: int
  • getImageBytes( java.lang.String ) - returns: [B
  • getIptcMetadata( javax.servlet.jsp.PageContext ) - returns: coldfusion.runtime.Struct
  • getIptcTag( java.lang.String, javax.servlet.jsp.PageContext ) - returns: java.lang.String
  • getSource() - returns: java.lang.String
  • getWidth() - returns: int
  • grayscale() - returns: void
  • info() - returns: coldfusion.runtime.Struct
  • initializeMetadata( javax.servlet.jsp.PageContext ) - returns: void
  • invert() - returns: void
  • overlay( coldfusion.image.Image ) - returns: void
  • paste( coldfusion.image.Image, int, int ) - returns: void
  • readBase64( java.lang.String ) - returns: void
  • resize( java.lang.String, java.lang.String, java.lang.String ) - returns: void
  • resize( java.lang.String, java.lang.String, java.lang.String, double ) - returns: void
  • rotate( float, float, float, java.lang.String ) - returns: void
  • rotateAxis( double ) - returns: void
  • rotateAxis( double, double, double ) - returns: void
  • scaleToFit( int ) - returns: void
  • scaleToFit( java.lang.String, java.lang.String, java.lang.String ) - returns: void
  • scaleToFit( java.lang.String, java.lang.String, java.lang.String, double ) - returns: void
  • setAntiAliasing( java.lang.String ) - returns: void
  • setBackground( java.lang.String ) - returns: void
  • setColor( java.lang.String ) - returns: void
  • setDrawingStroke( coldfusion.runtime.Struct ) - returns: void
  • setDrawingStroke( float, int, int, float, [F, float ) - returns: void
  • setRenderingHint( java.awt.RenderingHints$Key, java.lang.Object ) - returns: void
  • setTranparency( double ) - returns: void
  • setXorMode( java.lang.String ) - returns: void
  • sharpen( float ) - returns: void
  • sharpenEdge() - returns: void
  • shear( float, java.lang.String, java.lang.String ) - returns: void
  • shearAxis( double, double ) - returns: void
  • translate( int, int, java.lang.String ) - returns: void
  • translateAxis( int, int ) - returns: void
  • write( java.lang.String, float ) - returns: void
  • writeBase64( java.lang.String, java.lang.String, boolean ) - returns: void

More Stories By Ben Nadel

Ben Nadel has worked with ColdFusion for eight years and is a super ColdFusion enthusiast. He blogs regularly about all aspects of Web development on his personal site, http://www.bennadel.com, and does his best to give back to the ColdFusion community through online code demos and his "Ask Ben" blog posts. He is also a Certified Advanced ColdFusion MX7 developer and is one of the lead programmers at Nylon Technology.

Comments (3) View Comments

Share your thoughts on this story.

Add your comment
You must be signed in to add a comment. Sign-in | Register

In accordance with our Comment Policy, we encourage comments that are on topic, relevant and to-the-point. We will remove comments that include profanity, personal attacks, racial slurs, threats of violence, or other inappropriate material that violates our Terms and Conditions, and will block users who make repeated violations. We ask all readers to expect diversity of opinion and to treat one another with dignity and respect.


Most Recent Comments
Michael 07/12/08 01:43:25 AM EDT

The noisy ad is beyond annoying.

Mike Ritchie 08/01/07 06:08:54 PM EDT

I wonder if the CF team consulted with the developer of ImageCFC? It also was basically a wrapper for the underlying Java image functionality. Either way, this looks like an exceptionally useful tool. Do you need to instantiate the object using cfimage? Or is it possible to manipulate an image completely within cfscript?

Sanjeev 07/15/07 10:07:34 PM EDT

rename the CodFusion as ColdFusion !

IoT & Smart Cities Stories
The challenges of aggregating data from consumer-oriented devices, such as wearable technologies and smart thermostats, are fairly well-understood. However, there are a new set of challenges for IoT devices that generate megabytes or gigabytes of data per second. Certainly, the infrastructure will have to change, as those volumes of data will likely overwhelm the available bandwidth for aggregating the data into a central repository. Ochandarena discusses a whole new way to think about your next...
CloudEXPO | DevOpsSUMMIT | DXWorldEXPO are the world's most influential, independent events where Cloud Computing was coined and where technology buyers and vendors meet to experience and discuss the big picture of Digital Transformation and all of the strategies, tactics, and tools they need to realize their goals. Sponsors of DXWorldEXPO | CloudEXPO benefit from unmatched branding, profile building and lead generation opportunities.
All in Mobile is a place where we continually maximize their impact by fostering understanding, empathy, insights, creativity and joy. They believe that a truly useful and desirable mobile app doesn't need the brightest idea or the most advanced technology. A great product begins with understanding people. It's easy to think that customers will love your app, but can you justify it? They make sure your final app is something that users truly want and need. The only way to do this is by ...
Digital Transformation and Disruption, Amazon Style - What You Can Learn. Chris Kocher is a co-founder of Grey Heron, a management and strategic marketing consulting firm. He has 25+ years in both strategic and hands-on operating experience helping executives and investors build revenues and shareholder value. He has consulted with over 130 companies on innovating with new business models, product strategies and monetization. Chris has held management positions at HP and Symantec in addition to ...
Dynatrace is an application performance management software company with products for the information technology departments and digital business owners of medium and large businesses. Building the Future of Monitoring with Artificial Intelligence. Today we can collect lots and lots of performance data. We build beautiful dashboards and even have fancy query languages to access and transform the data. Still performance data is a secret language only a couple of people understand. The more busine...
DXWorldEXPO LLC announced today that Big Data Federation to Exhibit at the 22nd International CloudEXPO, colocated with DevOpsSUMMIT and DXWorldEXPO, November 12-13, 2018 in New York City. Big Data Federation, Inc. develops and applies artificial intelligence to predict financial and economic events that matter. The company uncovers patterns and precise drivers of performance and outcomes with the aid of machine-learning algorithms, big data, and fundamental analysis. Their products are deployed...
Cell networks have the advantage of long-range communications, reaching an estimated 90% of the world. But cell networks such as 2G, 3G and LTE consume lots of power and were designed for connecting people. They are not optimized for low- or battery-powered devices or for IoT applications with infrequently transmitted data. Cell IoT modules that support narrow-band IoT and 4G cell networks will enable cell connectivity, device management, and app enablement for low-power wide-area network IoT. B...
The hierarchical architecture that distributes "compute" within the network specially at the edge can enable new services by harnessing emerging technologies. But Edge-Compute comes at increased cost that needs to be managed and potentially augmented by creative architecture solutions as there will always a catching-up with the capacity demands. Processing power in smartphones has enhanced YoY and there is increasingly spare compute capacity that can be potentially pooled. Uber has successfully ...
SYS-CON Events announced today that CrowdReviews.com has been named “Media Sponsor” of SYS-CON's 22nd International Cloud Expo, which will take place on June 5–7, 2018, at the Javits Center in New York City, NY. CrowdReviews.com is a transparent online platform for determining which products and services are the best based on the opinion of the crowd. The crowd consists of Internet users that have experienced products and services first-hand and have an interest in letting other potential buye...
When talking IoT we often focus on the devices, the sensors, the hardware itself. The new smart appliances, the new smart or self-driving cars (which are amalgamations of many ‘things'). When we are looking at the world of IoT, we should take a step back, look at the big picture. What value are these devices providing. IoT is not about the devices, its about the data consumed and generated. The devices are tools, mechanisms, conduits. This paper discusses the considerations when dealing with the...