Site Meter
Nov 10
Como usar o JCrop para cortar imagens com ColdFusion
 

Eu quero mostrar como usar a biblioteca JCrop para fazer o crop em imagens usando o ColdFusion como backend.

Lembrando que vou postar somente um exemplo, e que a implementação, você pode fazer como achar melhor.

Index.html
Primeiro vamos criar um formulário simples chamando o nosso arquivo de crop, denominado crop.cfm

 <h2>Selecione uma imagem JPG ou GIF de at&eacute; 100k</h2>
<form name="form" id="form" action="crop.cfm" method="post" enctype="multipart/form-data">
    <input type="file" name="foto" id="foto" />
    <input type="submit" value="Carregar" />
</form>

Bem, feito isso, vamos ao arquivo responsável pelo crop.

crop.cfm
Primeiro fazemos o upload do arquivo e no meu caso eu verifiquei o tamanho do arquivo para não submeter arquivos pesados de mais.

 

<cfif isDefined("form.foto")>
        <cffile action="upload" destination="#GetDirectoryFromPath(ExpandPath("*.*"))#/upload" nameconflict="makeunique" filefield="foto">
        <cfif (file.ServerFileExt Is "jpg" or file.ServerFileExt Is "gif") and file.FileSize Lte 120000>
            <cfset filename = file.ServerFile />
        <cfelse>
            <cffile action="delete" file="#GetDirectoryFromPath(ExpandPath("*.*"))#upload/#file.ClientFileName#.#file.ClientFileExt#">
                <script language="javascript">
            alert('favor inserir um arquivo JPG ou GIF de at 150k!');
            alert('Arquivo deletado!');
            history.back();
        </script>
        </cfif>
</cfif>

Abaixo fica a parte do documento que só será executada quando o usuário fizer o crop.
No exemplo abaixo, temos as quatro linhas responsáveis por fazer o crop da imagem no ColdFusion. Vejam como é símples e prático, parece brincadeira de criança.

<cfif isDefined("form.x")>
            <cfimage source="upload/#url.img#" name="img">
            <cfset filename = url.img />
            <cfset ImageCrop(img,form.x,form.y,form.w,form.h) />
            <cfimage source="#img#" action="write" destination="upload/#url.img#"  overwrite="yes">
</cfif>

Ainda no mesmo arquivo, ficam as implementações e includes do JCrop.

<script src="js/jquery.pack.js"></script>
<script src="js/jquery.Jcrop.pack.js"></script>
<link rel="stylesheet" href="css/jquery.Jcrop.css" type="text/css" />

<script language="Javascript">
    $(window).load(function(){
        
        var api = $.Jcrop('#cropbox',{
        bgColor: 'black',
        onSelect: updateCoords
        });
        
        // Immediately set selection (can also be set by options)
        api.setSelect([ 100,100,200,200 ]);

        // Set an event handler to animate selection
        $('#button1').click(function() {
            api.animateTo([ 120,120,80,80 ]);
        });
    
    });
    
    function updateCoords(c)
    {
        $('#x').val(c.x);
        $('#y').val(c.y);
        $('#w').val(c.w);
        $('#h').val(c.h);
    };

    function checkCoords()
    {
        if (parseInt($('#x').val()) || parseInt($('#x').val()) == 0)
            return true;
        alert('Por favor selecione uma parte da imagem e depois recorte');
        return false;
    };
</script>

Mais abaixo o HTML para a exebição da imagem e da marcação para o crop.

<div id="outer">
    <div class="jcExample">
        <div class="article">
                <!-- This is the image we're attaching Jcrop to -->
            <img src="upload/<cfoutput>#filename#</cfoutput>" id="cropbox" />

            <!-- This is the form that our event handler fills -->
            <form action="crop.cfm?action=crop&img=<cfoutput>#filename#</cfoutput>" method="post" onSubmit="return checkCoords();">
                <input type="hidden" id="x" name="x" />
                <input type="hidden" id="y" name="y" />
                <input type="hidden" id="w" name="w" />
                <input type="hidden" id="h" name="h" />
                <input type="submit" value="Cortar Imagem" />
            </form>
        </div>
    </div>
</div>

Então, com isso temos um crop de imagem usando a biblioteca do jquery para marcar o corte da imagem.

Como vimos, o mais demorado é fazer o html e o javascript, pois o ColdFusion como sempre, resolve seu problema rápidamente.

Bom espero que gostem, muitas pessoas pediram que eu postasse o código dessa funcionalidade então está aí.

Quem tiver interesse em ver funcionando, segue o link:
http://www.pauloteixeira.blog.br/jcrop/

[]s

 
Comentários(1) Print del.icio.us Salvar
 

Referências (Posts que este faz referência!)

» Fazendo CROP de imagens usando jQuery e ColdFusion

Comentários (Seu comentário não aparecerá até ser aprovado.)

 

Silvio Delgado

Fala, meu chapa!
Eu já usei esse jCrop com ASP.NET e é realmente muito bom.

Fica uma dica: ao chamar a imagem, inclua um random, pq senão a anterior fica no cache.

Abraços.


Autor

Paulo Teixeira

Bookmark and Share


Busca


Categorias

Adobe [34]

AIR [23]

Certificações [1]

CFUG-BR [2]

ColdFusion [14]

Consultoria [1]

Dicas [26]

Eventos [5]

Flex [32]

Flex Cookbook [1]

Geral [13]

LCDS [1]

OOP/Patterns [7]

Tutoriais [22]



Por onde ando

Adobe

AIR Feed

Ben Forta

Blog Leo Caseiro

CFGIGOLÔ

CFUG-BR Adobe Groups

CFUGBR

ColdFusion Feed

Devnet ColdFusion

Flex Feed

Got API

Lauro Santos

My Adobe Groups

My BlipFm

My Flickr

My LinkedIn

My Twitter

Pcsilva

Por que CF?

Programming Land!

Rafael Capucho

Silvio Delgado Blog

Tofinha

Why CF?


Favoritos

Você precisa ter uma conta no blog para ter favoritos


  Credenciais


  Comentários

Muito bom saber que o GMAIL funciona também quando a nossa internet...

LeoCaseiro

Fala Leonardo, não precisa de plugin não, é que depois de habilitar...

Paulo Teixeira

Por isso sou fã da Web2.0 e acredito muito na comunidade! Assim...

LeoCaseiro

Gostei muito do navegador, achei ele muito rápido e estável! Aguardo...

Cadu

Valeu Cadu, logo teremos novas implementações. Obrigado por tudo!...

Paulo Teixeira


  Parceiros


  Assine

     RSS

     LOGIN

 

  AIRRotas

  RiaBox