cari
Rumahpembangunan bahagian belakangtutorial php怎么使用php的gd库画一条抗锯齿的粗斜线

如何使用php的gd库画一条抗锯齿的粗斜线?
如题,使用多边形画的填充图是有锯齿的。imageantialias函数是无效的。

------解决方案--------------------
点阵图有锯齿是必然的
imageantialias 的抗锯齿是有作用的,你可以对比他打开和关闭时的效果
如果你对 imageantialias 的效果不满意(毕竟GD不是专业的图像处理包),那就要你自己编程解决了

------解决方案--------------------
他是扰码加密的,有空研究一下
------解决方案--------------------
好无聊啊,最终是用 js 实现的
------解决方案--------------------
JS有现成的插件 做出来的很漂亮。。。用PHP干嘛
------解决方案--------------------
给你一个早年写的代码,供参考

PHP code
<?php //error_reporting(E_ALL ^ E_NOTICE);class Graph {  /**   * 伪3D绘图类   */  var $im;  var $type = "gif"; // png,gif,jpeg,wbmp  var $xo;  var $yo;  var $color;  var $fillcolor;  var $filldarkcolor;  var $filltype = true;  var $orgx;  var $orgy;  var $viewx;  var $viewy;  var $winx;  var $winy;  var $extx = 1;  var $exty = -1;  var $ksin;  var $kcos;  function Graph() {    if(func_num_args() == 2)        $this->create(func_get_arc(0),func_get_arc(1));    else        $this->create(400,300);  }  /**   * 在($x,$y)处画点   */  function pixel($x,$y) {    $p = $this->get_view($x,$y);    imagesetpixel($this->im,$p['x'],$p['y'],$this->color);    $this->xo = $p['x'];    $this->yo = $p['y'];  }  /**   * 移动到($x,$y)处   */  function moveto($x,$y) {    $p = $this->get_view($x,$y);    $this->xo = $p['x'];    $this->yo = $p['y'];  }  /**   * 从($x1,$y1)到($x2,$y2)处画线   */  function line($x1,$y1,$x2,$y2) {    $p1 = $this->get_view($x1,$y1);    $p2 = $this->get_view($x2,$y2);    imageline($this->im,$p1['x'],$p1['y'],$p2['x'],$p2['y'],$this->color);  }  /**   * 从当前位置到($x,$y)处画线   */  function lineto($x,$y) {    $p = $this->get_view($x,$y);    imageline($this->im, $this->xo, $this->yo, $p['x'], $p['y'], $this->color);    $this->xo = $p['x'];    $this->yo = $p['y'];  }  /**   * 设置当前颜色   */  function color($clr) {    $r = ($clr>>16) & 0xff;     $g = ($clr>>8) & 0xff;     $b = ($clr) & 0xff;     $this->color = ImageColorAllocate($this->im, $r,$g,$b);    $this->fillcolor = ImageColorAllocate($this->im, $r,$g,$b);    $this->filldarkcolor = ImageColorAllocate($this->im, $r/2,$g/2,$b/2);    return $this->color;  }  /**   * 设置当前充填颜色   */  function fillcolor($clr) {    $r = ($clr>>16) & 0xff;     $g = ($clr>>8) & 0xff;     $b = ($clr) & 0xff;     $this->fillcolor = ImageColorAllocate($this->im, $r,$g,$b);    return $this->fillcolor;  }  /**   * 创建GD句柄并设置坐标系   */  function create($x,$y) {    $this->im = imagecreatetruecolor($x,$y);imageantialias($this->im, 1);imagefill($this->im, 0, 0, $this->color(0xffffff));    $this->viewx = $x-1;    $this->viewy = -($y-1);    $this->winx = $x;    $this->winy = $y;    $this->orgx = 0;    $this->orgy = 0;//$y;    $this->colors = $this->color(0xffffff);    settype($this->ksin,"double");    settype($this->kcos,"double");    $this->ksin = sin(deg2rad(0));    $this->kcos = cos(deg2rad(0));  }  /**   * 坐标映射   */  function get_view($x,$y) {    $this->xo = $x*$this->kcos - $y*$this->ksin;    $this->yo = $x*$this->ksin + $y*$this->kcos;    $p['x'] = ($this->xo + $this->orgx)*($this->viewx/$this->winx);    $p['y'] = ($this->yo + $this->orgy)*($this->viewy/$this->winy)-$this->viewy;    return $p;  }  /**   * 设置限度   */  function set_ext($x,$y=0) {    $this->winx = $x;    if($y == 0) {        $this->winy = - $x * $this->viewy / $this->viewx;    }else {        $this->winy = $y;    }  }  /**   * 设置旋转角   */  function set_r($p) {    $this->ksin = sin(deg2rad($p));    $this->kcos = cos(deg2rad($p));  }  /**   * 构造图形,必需在派生类中重载本方法   */  function paint() {    /**     * 必需由派生类重载     * 必需包含语句 $this->create(宽度,高度);     */    die("paint 方法必需由派生类重载!");  }  /**   * 输出图形   */  function run() {    $this->paint();    $func = "Image".$this->type;    if(! function_exists($func)) {        $this->type = "png";        $func = "Image".$this->type;    }    Header("Content-type: image/{$this->type}");    $func($this->im);    imageDestroy($this->im);  }  /**   * 圆类图形数据生成,参数$p为坐标旋转角   */  function get_point($ox,$oy,$w,$h,$start,$end) {    $a = $w/2;    $b = $h/2;    $rs = array();    $i = $start;    for($i=$start;$iget_view($ox+$x,$oy+$y);        $rs[] = $p['x'];        $rs[] = $p['y'];        if($i == $end) break;        if($i+5 > $end) $i = $end - 5;    }    $p = $this->get_view($ox,$oy);    $rs[] = $p['x'];    $rs[] = $p['y'];    $rs[] = $rs[0];    $rs[] = $rs[1];    return $rs;  }  /**   * 弓形   */  function chord($left,$top,$w,$h,$start,$end,$z=0) {    $ar = $this->get_point($left,$top,$w,$h,$start,$end,$p);    for($i=0;$i<count>get_view($ar[$i],$ar[$i+1]);        $ar[$i] = $p['x'];        $ar[$i+1] = $p['y'];    }    imagefilledpolygon($this->im,$ar,count($ar)/2-1,$this->fillcolor);    imagepolygon($this->im,$ar,count($ar)/2-1,$this->color);  }  /**   * 扇形   */  function pie($left,$top,$w,$h,$start,$end,$z=0) {    $this->get_view($left,$top+$z);    $ar = $this->get_point($left,$top+$z,$w,$h,$start,$end);    $this->get_view($left,$top);    $arh = $this->get_point($left,$top,$w,$h,$start,$end);    for($j=0;$j<count array if>filltype)            imagefilledpolygon($this->im,$t,4,$this->filldarkcolor);        else            imagepolygon($this->im,$t,4,$this->color);    }    if($this->filltype)        imagefilledpolygon($this->im,$ar,count($ar)/2-1,$this->fillcolor);  }  /**   * 弧形   */  function arc($left,$top,$w,$h,$start,$end,$z=0) {    $ar = $this->get_point($left,$top,$w,$h,$start,$end,$p);    $this->moveto($ar[0],$ar[1]);    for($i=2;$i<count>lineto($ar[$i],$ar[$i+1]);  }}/** * 重载基类的paint方法 */class myGraph extends Graph {  function paint() {//    $this->create(400,300);    $this->create(200,150);$this->set_ext(400);    $this->set_r(10); // 旋转    $this->filltype = false; //充填    $k = 40;    //高    $a =200;    //中心x    $b = 150;    //中心y    $c = 200;    //长轴    $d = 100;    //短轴    $this->color(0x000000);    $this->color(0xff0000);    $this->pie($a,$b,$c,$d,0,100,$k);    $this->color(0x00ff00);    $this->pie($a,$b,$c,$d,120,240,$k);    $this->color(0x0000ff);    $this->pie($a+10,$b-10,$c,$d,240,360,$k);    $this->color(0x8080ff);    $this->pie(50,80,40,20,0,360,50);    $this->line($a,0,$a,$b*2);    $this->line(0,$b,$a*2,$b);  }}$g = new myGraph;$g->run();<div class="clear">
                 
              
              
        
            </div></count></count></count>
Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Bagaimanakah PHP mengenal pasti sesi pengguna?Bagaimanakah PHP mengenal pasti sesi pengguna?May 01, 2025 am 12:23 AM

Phpidentifierauser'sSessionusingSessionCookiesandSessionIds.1) whensession_start () ISCALLED, phpGeneratesAuniquesessionIdstoredinacookienamedPhpsessidontheUserer'sBrowser.2) ThisIdallowsPhptoretRievesSessionDataFromtheserver.

Apakah beberapa amalan terbaik untuk mendapatkan sesi PHP?Apakah beberapa amalan terbaik untuk mendapatkan sesi PHP?May 01, 2025 am 12:22 AM

Keselamatan sesi PHP boleh dicapai melalui langkah -langkah berikut: 1. Gunakan session_regenerate_id () untuk menjana semula ID sesi apabila pengguna log masuk atau merupakan operasi penting. 2. Sulitkan ID sesi penghantaran melalui protokol HTTPS. 3. Gunakan session_save_path () untuk menentukan direktori selamat untuk menyimpan data sesi dan menetapkan kebenaran dengan betul.

Di manakah fail sesi php disimpan secara lalai?Di manakah fail sesi php disimpan secara lalai?May 01, 2025 am 12:15 AM

PhpsessionFileSarestoredIntHedirectorySpecifiedBySession.save_path, biasanya/tmponunix-likesystemsorc: \ windows \ temponwindows.tocustomethis: 1) usession_save_path ()

Bagaimana anda mengambil data dari sesi PHP?Bagaimana anda mengambil data dari sesi PHP?May 01, 2025 am 12:11 AM

ToretrievedataFromaphpsession, startTheSessionWithSsion_start () andaccessVariablesInthe $ _SessionArray.Forexample: 1) startTheSession: session_start ()

Bagaimana anda boleh menggunakan sesi untuk melaksanakan keranjang belanja?Bagaimana anda boleh menggunakan sesi untuk melaksanakan keranjang belanja?May 01, 2025 am 12:10 AM

Langkah -langkah untuk membina sistem keranjang belanja yang cekap menggunakan sesi termasuk: 1) Memahami definisi dan fungsi sesi. Sesi ini adalah mekanisme penyimpanan sisi pelayan yang digunakan untuk mengekalkan status pengguna merentasi permintaan; 2) melaksanakan pengurusan sesi asas, seperti menambah produk ke keranjang belanja; 3) memperluas penggunaan lanjutan, menyokong pengurusan kuantiti produk dan penghapusan; 4) Mengoptimumkan prestasi dan keselamatan, dengan berterusan data sesi dan menggunakan pengecam sesi yang selamat.

Bagaimana anda membuat dan menggunakan antara muka dalam PHP?Bagaimana anda membuat dan menggunakan antara muka dalam PHP?Apr 30, 2025 pm 03:40 PM

Artikel ini menerangkan cara membuat, melaksanakan, dan menggunakan antara muka dalam PHP, memberi tumpuan kepada manfaat mereka untuk organisasi kod dan penyelenggaraan.

Apakah perbezaan antara crypt () dan password_hash ()?Apakah perbezaan antara crypt () dan password_hash ()?Apr 30, 2025 pm 03:39 PM

Artikel ini membincangkan perbezaan antara crypt () dan password_hash () dalam php untuk hashing kata laluan, memberi tumpuan kepada pelaksanaan, keselamatan, dan kesesuaian untuk aplikasi web moden.

Bagaimanakah anda dapat mencegah skrip lintas tapak (XSS) dalam PHP?Bagaimanakah anda dapat mencegah skrip lintas tapak (XSS) dalam PHP?Apr 30, 2025 pm 03:38 PM

Artikel membincangkan mencegah skrip lintas tapak (XSS) dalam PHP melalui pengesahan input, pengekodan output, dan menggunakan alat seperti OWASP ESAPI dan pembersih HTML.

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

EditPlus versi Cina retak

EditPlus versi Cina retak

Saiz kecil, penyerlahan sintaks, tidak menyokong fungsi gesaan kod

Versi Mac WebStorm

Versi Mac WebStorm

Alat pembangunan JavaScript yang berguna

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Persekitaran pembangunan bersepadu PHP yang berkuasa