3v4l.org

run code in 300+ PHP versions simultaneously
<?php define("TOP",0); define("BOTTOM",1); define("LEFT",2); define("RIGHT",3); function perspective($i,$gradient=0.85,$rightdown=TOP,$background=0xFFFFFF, $alpha=0) { $w=imagesx($i); $h=imagesy($i); $col=imagecolorallocatealpha($i,($background>>16)&0xFF,($background>>8)&0xFF,$background&0xFF,$alpha); $mult=5; $li=imagecreatetruecolor($w*$mult,$h*$mult); imagealphablending($li,false); imagefilledrectangle($li,0,0,$w*$mult,$h*$mult,$col); imagesavealpha($li,true); imagecopyresized($li,$i,0,0,0,0,$w*$mult,$h*$mult,$w,$h); imagedestroy($i); $w*=$mult; $h*=$mult; $image=imagecreatetruecolor($w,$h); imagealphablending($image,false); imagefilledrectangle($image,0,0,$w,$h,$col); imagealphablending($image,true); imageantialias($image,true); $test=$h*$gradient; $rdmod=$rightdown%2; $min=1; if($rightdown<2){ for($y=0;$y<$h;$y++){ $ny=$rdmod? $y : $h-$y; $off=round((1-$gradient)*$w*($ny/$h)); $t=((1-pow(1-pow(($ny/$h),2),0.5))*(1-$gradient)+($ny/$h)*$gradient); $nt=$rdmod? $t : 1-$t; if(abs(0.5-$nt)<$min){ $min=abs(0.5-$nt); $naty=$off; } imagecopyresampled($image,$li, round($off/2),$y, 0,abs($nt*$h), $w-$off,1, $w,1); } } else { for($x=0;$x<$w;$x++){ $nx=$rdmod? $x : $w-$x; $off=round((1-$gradient)*$h*($nx/$w)); $t=((1-pow(1-pow(($nx/$w),2),0.5))*(1-$gradient)+($nx/$w)*$gradient); $nt=$rdmod? $t : 1-$t; if(abs(0.5-$nt)<$min){ $min=abs(0.5-$nt); $natx=$off; } imagecopyresampled($image,$li, $x,round($off/2), abs($nt*$w),0, 1,$h-$off, 1,$h); } } imagedestroy($li); imageantialias($image,false); imagealphablending($image,false); imagesavealpha($image,true); $i=imagecreatetruecolor(($w+$naty)/$mult,($h+$natx)/$mult); imagealphablending($i,false); imagefilledrectangle($i,0,0,($w+$naty)/$mult,($h+$natx)/$mult,$col); imagealphablending($i,true); imageantialias($i,true); imagecopyresampled($i,$image,0,0,0,0,($w+$naty)/$mult,($h+$natx)/$mult,$w,$h); imagedestroy($image); imagealphablending($i,false); imageantialias($i,false); imagesavealpha($i,true); return $i; } $img=perspective("http://i.imgur.com/iX5Aski.png",0.2,RIGHT,0xFFFFFF,127);
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/CJ4c8
function name:  (null)
number of ops:  26
compiled vars:  !0 = $img
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    4     0  E >   INIT_FCALL                                               'define'
          1        SEND_VAL                                                 'TOP'
          2        SEND_VAL                                                 0
          3        DO_ICALL                                                 
    5     4        INIT_FCALL                                               'define'
          5        SEND_VAL                                                 'BOTTOM'
          6        SEND_VAL                                                 1
          7        DO_ICALL                                                 
    6     8        INIT_FCALL                                               'define'
          9        SEND_VAL                                                 'LEFT'
         10        SEND_VAL                                                 2
         11        DO_ICALL                                                 
    7    12        INIT_FCALL                                               'define'
         13        SEND_VAL                                                 'RIGHT'
         14        SEND_VAL                                                 3
         15        DO_ICALL                                                 
   87    16        INIT_FCALL                                               'perspective'
         17        SEND_VAL                                                 'http%3A%2F%2Fi.imgur.com%2FiX5Aski.png'
         18        SEND_VAL                                                 0.2
         19        FETCH_CONSTANT                                   ~5      'RIGHT'
         20        SEND_VAL                                                 ~5
         21        SEND_VAL                                                 16777215
         22        SEND_VAL                                                 127
         23        DO_FCALL                                      0  $6      
         24        ASSIGN                                                   !0, $6
         25      > RETURN                                                   1

Function perspective:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 103, Position 2 = 179
Branch analysis from position: 103
1 jumps found. (Code = 42) Position 1 = 176
Branch analysis from position: 176
2 jumps found. (Code = 44) Position 1 = 178, Position 2 = 105
Branch analysis from position: 178
1 jumps found. (Code = 42) Position 1 = 254
Branch analysis from position: 254
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 105
2 jumps found. (Code = 43) Position 1 = 106, Position 2 = 108
Branch analysis from position: 106
1 jumps found. (Code = 42) Position 1 = 110
Branch analysis from position: 110
2 jumps found. (Code = 43) Position 1 = 137, Position 2 = 139
Branch analysis from position: 137
1 jumps found. (Code = 42) Position 1 = 141
Branch analysis from position: 141
2 jumps found. (Code = 43) Position 1 = 148, Position 2 = 154
Branch analysis from position: 148
2 jumps found. (Code = 44) Position 1 = 178, Position 2 = 105
Branch analysis from position: 178
Branch analysis from position: 105
Branch analysis from position: 154
Branch analysis from position: 139
2 jumps found. (Code = 43) Position 1 = 148, Position 2 = 154
Branch analysis from position: 148
Branch analysis from position: 154
Branch analysis from position: 108
2 jumps found. (Code = 43) Position 1 = 137, Position 2 = 139
Branch analysis from position: 137
Branch analysis from position: 139
Branch analysis from position: 179
1 jumps found. (Code = 42) Position 1 = 252
Branch analysis from position: 252
2 jumps found. (Code = 44) Position 1 = 254, Position 2 = 181
Branch analysis from position: 254
Branch analysis from position: 181
2 jumps found. (Code = 43) Position 1 = 182, Position 2 = 184
Branch analysis from position: 182
1 jumps found. (Code = 42) Position 1 = 186
Branch analysis from position: 186
2 jumps found. (Code = 43) Position 1 = 213, Position 2 = 215
Branch analysis from position: 213
1 jumps found. (Code = 42) Position 1 = 217
Branch analysis from position: 217
2 jumps found. (Code = 43) Position 1 = 224, Position 2 = 230
Branch analysis from position: 224
2 jumps found. (Code = 44) Position 1 = 254, Position 2 = 181
Branch analysis from position: 254
Branch analysis from position: 181
Branch analysis from position: 230
Branch analysis from position: 215
2 jumps found. (Code = 43) Position 1 = 224, Position 2 = 230
Branch analysis from position: 224
Branch analysis from position: 230
Branch analysis from position: 184
2 jumps found. (Code = 43) Position 1 = 213, Position 2 = 215
Branch analysis from position: 213
Branch analysis from position: 215
filename:       /in/CJ4c8
function name:  perspective
number of ops:  335
compiled vars:  !0 = $i, !1 = $gradient, !2 = $rightdown, !3 = $background, !4 = $alpha, !5 = $w, !6 = $h, !7 = $col, !8 = $mult, !9 = $li, !10 = $image, !11 = $test, !12 = $rdmod, !13 = $min, !14 = $y, !15 = $ny, !16 = $off, !17 = $t, !18 = $nt, !19 = $naty, !20 = $x, !21 = $nx, !22 = $natx
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    9     0  E >   RECV                                             !0      
          1        RECV_INIT                                        !1      0.85
          2        RECV_INIT                                        !2      <const ast>
          3        RECV_INIT                                        !3      16777215
          4        RECV_INIT                                        !4      0
   10     5        INIT_FCALL_BY_NAME                                       'imagesx'
          6        SEND_VAR_EX                                              !0
          7        DO_FCALL                                      0  $23     
          8        ASSIGN                                                   !5, $23
   11     9        INIT_FCALL_BY_NAME                                       'imagesy'
         10        SEND_VAR_EX                                              !0
         11        DO_FCALL                                      0  $25     
         12        ASSIGN                                                   !6, $25
   12    13        INIT_FCALL_BY_NAME                                       'imagecolorallocatealpha'
         14        SEND_VAR_EX                                              !0
         15        SR                                               ~27     !3, 16
         16        BW_AND                                           ~28     ~27, 255
         17        SEND_VAL_EX                                              ~28
         18        SR                                               ~29     !3, 8
         19        BW_AND                                           ~30     ~29, 255
         20        SEND_VAL_EX                                              ~30
         21        BW_AND                                           ~31     !3, 255
         22        SEND_VAL_EX                                              ~31
         23        SEND_VAR_EX                                              !4
         24        DO_FCALL                                      0  $32     
         25        ASSIGN                                                   !7, $32
   14    26        ASSIGN                                                   !8, 5
   15    27        INIT_FCALL_BY_NAME                                       'imagecreatetruecolor'
         28        MUL                                              ~35     !5, !8
         29        SEND_VAL_EX                                              ~35
         30        MUL                                              ~36     !6, !8
         31        SEND_VAL_EX                                              ~36
         32        DO_FCALL                                      0  $37     
         33        ASSIGN                                                   !9, $37
   16    34        INIT_FCALL_BY_NAME                                       'imagealphablending'
         35        SEND_VAR_EX                                              !9
         36        SEND_VAL_EX                                              <false>
         37        DO_FCALL                                      0          
   17    38        INIT_FCALL_BY_NAME                                       'imagefilledrectangle'
         39        SEND_VAR_EX                                              !9
         40        SEND_VAL_EX                                              0
         41        SEND_VAL_EX                                              0
         42        MUL                                              ~40     !5, !8
         43        SEND_VAL_EX                                              ~40
         44        MUL                                              ~41     !6, !8
         45        SEND_VAL_EX                                              ~41
         46        SEND_VAR_EX                                              !7
         47        DO_FCALL                                      0          
   18    48        INIT_FCALL_BY_NAME                                       'imagesavealpha'
         49        SEND_VAR_EX                                              !9
         50        SEND_VAL_EX                                              <true>
         51        DO_FCALL                                      0          
   20    52        INIT_FCALL_BY_NAME                                       'imagecopyresized'
         53        SEND_VAR_EX                                              !9
         54        SEND_VAR_EX                                              !0
         55        SEND_VAL_EX                                              0
         56        SEND_VAL_EX                                              0
         57        SEND_VAL_EX                                              0
         58        SEND_VAL_EX                                              0
         59        MUL                                              ~44     !5, !8
         60        SEND_VAL_EX                                              ~44
         61        MUL                                              ~45     !6, !8
         62        SEND_VAL_EX                                              ~45
         63        SEND_VAR_EX                                              !5
         64        SEND_VAR_EX                                              !6
         65        DO_FCALL                                      0          
   21    66        INIT_FCALL_BY_NAME                                       'imagedestroy'
         67        SEND_VAR_EX                                              !0
         68        DO_FCALL                                      0          
   22    69        ASSIGN_OP                                     3          !5, !8
   23    70        ASSIGN_OP                                     3          !6, !8
   26    71        INIT_FCALL_BY_NAME                                       'imagecreatetruecolor'
         72        SEND_VAR_EX                                              !5
         73        SEND_VAR_EX                                              !6
         74        DO_FCALL                                      0  $50     
         75        ASSIGN                                                   !10, $50
   27    76        INIT_FCALL_BY_NAME                                       'imagealphablending'
         77        SEND_VAR_EX                                              !10
         78        SEND_VAL_EX                                              <false>
         79        DO_FCALL                                      0          
   28    80        INIT_FCALL_BY_NAME                                       'imagefilledrectangle'
         81        SEND_VAR_EX                                              !10
         82        SEND_VAL_EX                                              0
         83        SEND_VAL_EX                                              0
         84        SEND_VAR_EX                                              !5
         85        SEND_VAR_EX                                              !6
         86        SEND_VAR_EX                                              !7
         87        DO_FCALL                                      0          
   29    88        INIT_FCALL_BY_NAME                                       'imagealphablending'
         89        SEND_VAR_EX                                              !10
         90        SEND_VAL_EX                                              <true>
         91        DO_FCALL                                      0          
   31    92        INIT_FCALL_BY_NAME                                       'imageantialias'
         93        SEND_VAR_EX                                              !10
         94        SEND_VAL_EX                                              <true>
         95        DO_FCALL                                      0          
   32    96        MUL                                              ~56     !6, !1
         97        ASSIGN                                                   !11, ~56
   34    98        MOD                                              ~58     !2, 2
         99        ASSIGN                                                   !12, ~58
   35   100        ASSIGN                                                   !13, 1
   36   101        IS_SMALLER                                               !2, 2
        102      > JMPZ                                                     ~61, ->179
   37   103    >   ASSIGN                                                   !14, 0
        104      > JMP                                                      ->176
   38   105    > > JMPZ                                                     !12, ->108
        106    >   QM_ASSIGN                                        ~63     !14
        107      > JMP                                                      ->110
        108    >   SUB                                              ~64     !6, !14
        109        QM_ASSIGN                                        ~63     ~64
        110    >   ASSIGN                                                   !15, ~63
   39   111        INIT_FCALL                                               'round'
        112        SUB                                              ~66     1, !1
        113        MUL                                              ~67     !5, ~66
        114        DIV                                              ~68     !15, !6
        115        MUL                                              ~69     ~67, ~68
        116        SEND_VAL                                                 ~69
        117        DO_ICALL                                         $70     
        118        ASSIGN                                                   !16, $70
   40   119        INIT_FCALL                                               'pow'
        120        INIT_FCALL                                               'pow'
        121        DIV                                              ~72     !15, !6
        122        SEND_VAL                                                 ~72
        123        SEND_VAL                                                 2
        124        DO_ICALL                                         $73     
        125        SUB                                              ~74     1, $73
        126        SEND_VAL                                                 ~74
        127        SEND_VAL                                                 0.5
        128        DO_ICALL                                         $75     
        129        SUB                                              ~76     1, $75
        130        SUB                                              ~77     1, !1
        131        MUL                                              ~78     ~76, ~77
        132        DIV                                              ~79     !15, !6
        133        MUL                                              ~80     !1, ~79
        134        ADD                                              ~81     ~78, ~80
        135        ASSIGN                                                   !17, ~81
   41   136      > JMPZ                                                     !12, ->139
        137    >   QM_ASSIGN                                        ~83     !17
        138      > JMP                                                      ->141
        139    >   SUB                                              ~84     1, !17
        140        QM_ASSIGN                                        ~83     ~84
        141    >   ASSIGN                                                   !18, ~83
   42   142        INIT_FCALL                                               'abs'
        143        SUB                                              ~86     0.5, !18
        144        SEND_VAL                                                 ~86
        145        DO_ICALL                                         $87     
        146        IS_SMALLER                                               $87, !13
        147      > JMPZ                                                     ~88, ->154
   43   148    >   INIT_FCALL                                               'abs'
        149        SUB                                              ~89     0.5, !18
        150        SEND_VAL                                                 ~89
        151        DO_ICALL                                         $90     
        152        ASSIGN                                                   !13, $90
   44   153        ASSIGN                                                   !19, !16
   46   154    >   INIT_FCALL_BY_NAME                                       'imagecopyresampled'
        155        SEND_VAR_EX                                              !10
        156        SEND_VAR_EX                                              !9
   47   157        INIT_FCALL                                               'round'
        158        DIV                                              ~93     !16, 2
        159        SEND_VAL                                                 ~93
        160        DO_ICALL                                         $94     
        161        SEND_VAR_NO_REF_EX                                       $94
   46   162        SEND_VAR_EX                                              !14
   48   163        SEND_VAL_EX                                              0
        164        INIT_FCALL                                               'abs'
        165        MUL                                              ~95     !18, !6
        166        SEND_VAL                                                 ~95
        167        DO_ICALL                                         $96     
        168        SEND_VAR_NO_REF_EX                                       $96
   49   169        SUB                                              ~97     !5, !16
        170        SEND_VAL_EX                                              ~97
        171        SEND_VAL_EX                                              1
   46   172        SEND_VAR_EX                                              !5
   50   173        SEND_VAL_EX                                              1
   46   174        DO_FCALL                                      0          
   37   175        PRE_INC                                                  !14
        176    >   IS_SMALLER                                               !14, !6
        177      > JMPNZ                                                    ~100, ->105
   36   178    > > JMP                                                      ->254
   53   179    >   ASSIGN                                                   !20, 0
        180      > JMP                                                      ->252
   54   181    > > JMPZ                                                     !12, ->184
        182    >   QM_ASSIGN                                        ~102    !20
        183      > JMP                                                      ->186
        184    >   SUB                                              ~103    !5, !20
        185        QM_ASSIGN                                        ~102    ~103
        186    >   ASSIGN                                                   !21, ~102
   55   187        INIT_FCALL                                               'round'
        188        SUB                                              ~105    1, !1
        189        MUL                                              ~106    !6, ~105
        190        DIV                                              ~107    !21, !5
        191        MUL                                              ~108    ~106, ~107
        192        SEND_VAL                                                 ~108
        193        DO_ICALL                                         $109    
        194        ASSIGN                                                   !16, $109
   56   195        INIT_FCALL                                               'pow'
        196        INIT_FCALL                                               'pow'
        197        DIV                                              ~111    !21, !5
        198        SEND_VAL                                                 ~111
        199        SEND_VAL                                                 2
        200        DO_ICALL                                         $112    
        201        SUB                                              ~113    1, $112
        202        SEND_VAL                                                 ~113
        203        SEND_VAL                                                 0.5
        204        DO_ICALL                                         $114    
        205        SUB                                              ~115    1, $114
        206        SUB                                              ~116    1, !1
        207        MUL                                              ~117    ~115, ~116
        208        DIV                                              ~118    !21, !5
        209        MUL                                              ~119    !1, ~118
        210        ADD                                              ~120    ~117, ~119
        211        ASSIGN                                                   !17, ~120
   57   212      > JMPZ                                                     !12, ->215
        213    >   QM_ASSIGN                                        ~122    !17
        214      > JMP                                                      ->217
        215    >   SUB                                              ~123    1, !17
        216        QM_ASSIGN                                        ~122    ~123
        217    >   ASSIGN                                                   !18, ~122
   58   218        INIT_FCALL                                               'abs'
        219        SUB                                              ~125    0.5, !18
        220        SEND_VAL                                                 ~125
        221        DO_ICALL                                         $126    
        222        IS_SMALLER                                               $126, !13
        223      > JMPZ                                                     ~127, ->230
   59   224    >   INIT_FCALL                                               'abs'
        225        SUB                                              ~128    0.5, !18
        226        SEND_VAL                                                 ~128
        227        DO_ICALL                                         $129    
        228        ASSIGN                                                   !13, $129
   60   229        ASSIGN                                                   !22, !16
   62   230    >   INIT_FCALL_BY_NAME                                       'imagecopyresampled'
        231        SEND_VAR_EX                                              !10
        232        SEND_VAR_EX                                              !9
        233        SEND_VAR_EX                                              !20
   63   234        INIT_FCALL                                               'round'
        235        DIV                                              ~132    !16, 2
        236        SEND_VAL                                                 ~132
        237        DO_ICALL                                         $133    
        238        SEND_VAR_NO_REF_EX                                       $133
   64   239        INIT_FCALL                                               'abs'
        240        MUL                                              ~134    !18, !5
        241        SEND_VAL                                                 ~134
        242        DO_ICALL                                         $135    
        243        SEND_VAR_NO_REF_EX                                       $135
        244        SEND_VAL_EX                                              0
   65   245        SEND_VAL_EX                                              1
        246        SUB                                              ~136    !6, !16
        247        SEND_VAL_EX                                              ~136
   66   248        SEND_VAL_EX                                              1
   62   249        SEND_VAR_EX                                              !6
        250        DO_FCALL                                      0          
   53   251        PRE_INC                                                  !20
        252    >   IS_SMALLER                                               !20, !5
        253      > JMPNZ                                                    ~139, ->181
   69   254    >   INIT_FCALL_BY_NAME                                       'imagedestroy'
        255        SEND_VAR_EX                                              !9
        256        DO_FCALL                                      0          
   71   257        INIT_FCALL_BY_NAME                                       'imageantialias'
        258        SEND_VAR_EX                                              !10
        259        SEND_VAL_EX                                              <false>
        260        DO_FCALL                                      0          
   72   261        INIT_FCALL_BY_NAME                                       'imagealphablending'
        262        SEND_VAR_EX                                              !10
        263        SEND_VAL_EX                                              <false>
        264        DO_FCALL                                      0          
   73   265        INIT_FCALL_BY_NAME                                       'imagesavealpha'
        266        SEND_VAR_EX                                              !10
        267        SEND_VAL_EX                                              <true>
        268        DO_FCALL                                      0          
   75   269        INIT_FCALL_BY_NAME                                       'imagecreatetruecolor'
        270        ADD                                              ~144    !5, !19
        271        DIV                                              ~145    ~144, !8
        272        SEND_VAL_EX                                              ~145
        273        ADD                                              ~146    !6, !22
        274        DIV                                              ~147    ~146, !8
        275        SEND_VAL_EX                                              ~147
        276        DO_FCALL                                      0  $148    
        277        ASSIGN                                                   !0, $148
   76   278        INIT_FCALL_BY_NAME                                       'imagealphablending'
        279        SEND_VAR_EX                                              !0
        280        SEND_VAL_EX                                              <false>
        281        DO_FCALL                                      0          
   77   282        INIT_FCALL_BY_NAME                                       'imagefilledrectangle'
        283        SEND_VAR_EX                                              !0
        284        SEND_VAL_EX                                              0
        285        SEND_VAL_EX                                              0
        286        ADD                                              ~151    !5, !19
        287        DIV                                              ~152    ~151, !8
        288        SEND_VAL_EX                                              ~152
        289        ADD                                              ~153    !6, !22
        290        DIV                                              ~154    ~153, !8
        291        SEND_VAL_EX                                              ~154
        292        SEND_VAR_EX                                              !7
        293        DO_FCALL                                      0          
   78   294        INIT_FCALL_BY_NAME                                       'imagealphablending'
        295        SEND_VAR_EX                                              !0
        296        SEND_VAL_EX                                              <true>
        297        DO_FCALL                                      0          
   79   298        INIT_FCALL_BY_NAME                                       'imageantialias'
        299        SEND_VAR_EX                                              !0
        300        SEND_VAL_EX                                              <true>
        301        DO_FCALL                                      0          
   80   302        INIT_FCALL_BY_NAME                                       'imagecopyresampled'
        303        SEND_VAR_EX                                              !0
        304        SEND_VAR_EX                                              !10
        305        SEND_VAL_EX                                              0
        306        SEND_VAL_EX                                              0
        307        SEND_VAL_EX                                              0
        308        SEND_VAL_EX                                              0
        309        ADD                                              ~158    !5, !19
        310        DIV                                              ~159    ~158, !8
        311        SEND_VAL_EX                                              ~159
        312        ADD                                              ~160    !6, !22
        313        DIV                                              ~161    ~160, !8
        314        SEND_VAL_EX                                              ~161
        315        SEND_VAR_EX                                              !5
        316        SEND_VAR_EX                                              !6
        317        DO_FCALL                                      0          
   81   318        INIT_FCALL_BY_NAME                                       'imagedestroy'
        319        SEND_VAR_EX                                              !10
        320        DO_FCALL                                      0          
   82   321        INIT_FCALL_BY_NAME                                       'imagealphablending'
        322        SEND_VAR_EX                                              !0
        323        SEND_VAL_EX                                              <false>
        324        DO_FCALL                                      0          
   83   325        INIT_FCALL_BY_NAME                                       'imageantialias'
        326        SEND_VAR_EX                                              !0
        327        SEND_VAL_EX                                              <false>
        328    

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
141.84 ms | 1036 KiB | 18 Q