Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #@gui DCT FSU : fx_dct_fsu, fx_dct_fsu_preview(0)
- #@gui : note = note("<small>DCT operations.</small>")
- #@gui : Mode = choice("Lowpass","Highpass","Plaid","Lowpassed Plaid","Highpassed Plaid","Subsample")
- #@gui : X Threshold (%) = float(50,0,100)
- #@gui : Y Threshold (%) = float(50,0,100)
- #@gui : Mirror = choice("Off","X","Y","XY")
- #@gui : X Shift (%) = float(0,0,100)
- #@gui : Y Shift (%) = float(0,0,100)
- #@gui : Normalise = choice("Off","Standard","Fold")
- #@gui : Alpha = bool(0)
- #@gui : Reverse = bool(0)
- _dct_fsu :
- if $7 idct else dct fi
- f "begin(mode="$1";qx="$2";qy="$3");
- mode==0?(((x>(w*qx))||(y>(h*qy)))?0:i):
- mode==1?(((x<(w*qx))||(y<(h*qy)))?0:i):
- mode==2?(((x==round((w*qx)))||(y==round((h*qy))))?i:0):
- mode==3?((((x==round((w*qx)))||(y==round((h*qy))))&&((x<=(w*qx))||(y<=(h*qy))))?i:0):
- mode==4?((((x==round((w*qx)))||(y==round((h*qy))))&&((x>=(w*qx))||(y>=(h*qy))))?i:0):
- mode==5?(i(round(x,max(1,w*(1-qx^2))),round(y,max(1,h*(1-qy^2))))):
- i"
- #if {$1==5} iw={w} ih={h} r {max(ceil($2*w),1)},{max(ceil($3*h),1)} r $iw,$ih fi
- if {$4==1} mirror x elif {$4==2} mirror y elif {$4==3} mirror xy fi
- f "j(round(w*"$5"),round(h*"$6"),0,0,0,2)"
- if $7 dct else idct fi
- fx_dct_fsu :
- qx=($2/100)^2
- qy=($3/100)^2
- repeat $! l[$>]
- if {!$8} split_opacity fi
- l[0]
- _dct_fsu $1,$qx,$qy,$4,{$5/100},{$6/100},$9
- if $7 n 0,255 if {$7==2} - 127.5 abs n 0,255 fi fi
- endl
- if {!$8} a c fi
- endl done
- fx_dct_fsu_preview :
- fx_dct_fsu $*
- #@gui JFIF Effects 2: fx_jfif_2, fx_jfif_2_preview(0)
- #@gui : note = note("<small>Poorly-implemented JPEG encoder. Low block dimensions will destroy the CPU!</small>")
- #@gui : 1. Quality Threshold (%) = float(50,0,100)
- #@gui : 2. Quality Mode = choice("Rectangle 1","Rectangle 2","Diagonal 1","Diagonal 2")
- #@gui : 3. Detail Regain = float(2,0,10)
- #@gui : 4. Reverse Transform = bool(0)
- #@gui : 5. Block Width = int(8,1,32)
- #@gui : 6. Block Height = int(8,1,32)
- #@gui : 7. Colour Space = choice("RGB","sRGB","CMY","HSV8","HSV","HSL8","HSL","HSI8","HSI","LCH8","LCH","Lab8","Lab","YCbCr","YCbCrGLIC","YIQ8","YIQ","YUV8","YUV","Bayer","HCY","XYZ8","XYZ")
- fx_jfif_2:
- q=$1/100
- con={($3/10)^8}
- bw=$5
- bh=$6
- if {$7>=2} cs={$7+1} else cs=$7 fi
- csswap 0,1,0,$cs
- repeat $! l[$>]
- iw={w}
- ih={h}
- nw={w+(-w%$bw)}
- nh={h+(-h%$bh)}
- r {$nw},{$nh},1,100%,0,3
- split_tiles {-$bw},{-$bh}
- if $4 idct else dct fi
- f "begin(q="$q";mode="$2";bw="$bw";bh="$bh";con="$con");
- mode==0?val=i*cut(1+(q*(max(bw,bh))-(max(x,y))),0,1):
- mode==1?val=i*cut(1+(q*(max(bw,bh))-(max(x/bw,y/bh)*max(bw,bh))),0,1):
- mode==2?val=i*cut(1+(q*(bw+bh)-(x+y)),0,1):
- mode==3?val=i*cut(1+(q*(2*max(bw,bh))-(x/bw+y/bh)*max(bw,bh)),0,1);
- round(round(val*abs(1+con*val),10000*((1-q)^4))/abs(1+con*val))
- "
- f "((x>"$bw")||y>"$bh")?0:i"
- if $4 dct else idct fi
- append_tiles {$nw/$bw},{$nh/$bh}
- r {$iw},{$ih},1,100%,0,3
- endl
- done
- csswap $cs,1,0,0
- fx_jfif_2_preview:
- fx_jfif_2 $*
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement