doutang1884 2013-07-25 07:21
浏览 31
已采纳

使用php创建图像并作为ajax的响应发送

I am using the following code to generate a image using php.

        $image_width = 120;
        $image_height = 40;
        $characters_on_image = 6;
        $font = '/fonts/OpenSans.ttf';

        //The characters that can be used in the CAPTCHA code.
        //avoid confusing characters (l 1 and i for example)
        $possible_letters = '23456789bcdfghjkmnpqrstvwxyz';
        $random_dots = 10;
        $random_lines = 30;
        $captcha_text_color="0x142864";
        $captcha_noice_color = "0x142864";

        $code = '';

        $i = 0;
        while ($i < $characters_on_image) {
        $code .= substr($possible_letters, mt_rand(0, strlen($possible_letters)-1), 1);
        $i++;
        }

        $font_size = $image_height * 0.75;
        $image = @imagecreate($image_width, $image_height);

        /* setting the background, text and noise colours here */
        $background_color = imagecolorallocate($image, 255, 255, 255);

        $arr_text_color = $this->hexrgb($captcha_text_color);
        $text_color = imagecolorallocate($image, $arr_text_color['red'],
        $arr_text_color['green'], $arr_text_color['blue']);

        $arr_noice_color = $this->hexrgb($captcha_noice_color);
        $image_noise_color = imagecolorallocate($image, $arr_noice_color['red'],
        $arr_noice_color['green'], $arr_noice_color['blue']);

        /* generating the dots randomly in background */
        for( $i=0; $i<$random_dots; $i++ ) {
        imagefilledellipse($image, mt_rand(0,$image_width),
        mt_rand(0,$image_height), 2, 3, $image_noise_color);
        }

        /* generating lines randomly in background of image */
        for( $i=0; $i<$random_lines; $i++ ) {
        imageline($image, mt_rand(0,$image_width), mt_rand(0,$image_height),
        mt_rand(0,$image_width), mt_rand(0,$image_height), $image_noise_color);
        }

        /* create a text box and add 6 letters code in it */
        $textbox = imagettfbbox($font_size, 0, $font, $code);
        $x = ($image_width - $textbox[4])/2;
        $y = ($image_height - $textbox[5])/2;
        imagettftext($image, $font_size, 0, $x, $y, $text_color, $font , $code);

        /* Show captcha image in the page html page */
        header('Content-Type: image/jpeg');// defining the image type to be shown in browser widow
        imagejpeg($image);//showing the image
        imagedestroy($image);//destroying the image instance

And i am creating this in a ajax call.

$.ajax({
        url      : url,
        success  : function(data){
            $("#captcha_text").html(data);

        }
    });

But when i checked the console no response is getting.How to get this image and display it.Any help is much appreciated.

  • 写回答

2条回答 默认 最新

  • douan6815 2013-07-25 07:37
    关注

    If you need to create some captcha use the following code,

    <img id='captcha' src='your_php_file_path' />
    <a href="#" id="refresh">Refresh captcha</a>
    <script>
    $('#refresh').click(function(){
       $('#captcha').attr({
           src:'your_php_file_path?hash='+Math.random()*100000,
       });
    });
    </script>
    

    The hash value is passed for avoiding the cached images, the random value will produce a different url , so new images will produced.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥100 求数学坐标画圆以及直线的算法
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 自己瞎改改,结果现在又运行不了了
  • ¥15 链式存储应该如何解决
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站