中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

Java將出片處理成老照片特效代碼

2018-07-20    來源:open-open

容器云強(qiáng)勢上線!快速搭建集群,上萬Linux鏡像隨意使用
PS中有一種濾鏡可以讓圖像看上去好像歷經(jīng)歲月,微微泛黃 英文中這種圖像特效被稱為Sepia Tone Effect 直譯過來的意思
int fr= (int)(((double)tr * 0.393) + ((double)tg * 0.769) + ((double)tb * 0.189));  
int fg = (int)(((double)tr * 0.349) + ((double)tg * 0.686) + ((double)tb * 0.168));   
int fb= (int)(((double)tr * 0.272) + ((double)tg * 0.534) + ((double)tb * 0.131));  


2. 對圖像計算出來的新的RGB值根據(jù)隨機(jī)權(quán)重與舊值混合。
計算隨機(jī)權(quán)重的代碼如下:
private double noise() {  
    return Math.random()*0.5 + 0.5;  
}  

混合顏色的代碼如下:
private double colorBlend(double scale, double dest, double src) {  
    return (scale * dest + (1.0 - scale) * src);  
}  



濾鏡完全源代碼:
package com.gloomyfish.filter.study;  
  
import java.awt.image.BufferedImage;  
  
public class SepiaToneFilter extends AbstractBufferedImageOp {  
  
    @Override  
    public BufferedImage filter(BufferedImage src, BufferedImage dest) {  
        int width = src.getWidth();  
        int height = src.getHeight();  
  
        if ( dest == null )  
            dest = createCompatibleDestImage( src, null );  
  
        int[] inPixels = new int[width*height];  
        int[] outPixels = new int[width*height];  
        getRGB( src, 0, 0, width, height, inPixels );  
        int index = 0;  
        for(int row=0; row<height; row++) {  
            int ta = 0, tr = 0, tg = 0, tb = 0;  
            for(int col=0; col<width; col++) {  
                index = row * width + col;  
                ta = (inPixels[index] >> 24) & 0xff;  
                tr = (inPixels[index] >> 16) & 0xff;  
                tg = (inPixels[index] >> 8) & 0xff;  
                tb = inPixels[index] & 0xff;  
  
//int fr= (int)(((double)tr * 0.393) + ((double)tg * 0.769) + ((double)tb * 0.189));  
//int fg = (int)(((double)tr * 0.349) + ((double)tg * 0.686) + ((double)tb * 0.168));   
//int fb= (int)(((double)tr * 0.272) + ((double)tg * 0.534) + ((double)tb * 0.131));  
                  
                int fr = (int)colorBlend(noise(), (tr * 0.393) + (tg * 0.769) + (tb * 0.189), tr);  
                int fg = (int)colorBlend(noise(), (tr * 0.349) + (tg * 0.686) + (tb * 0.168), tg);  
                int fb = (int)colorBlend(noise(), (tr * 0.272) + (tg * 0.534) + (tb * 0.131), tb);  
                  
                outPixels[index] = (ta << 24) | (clamp(fr) << 16) | (clamp(fg) << 8) | clamp(fb);  
                  
            }  
        }  
        setRGB( dest, 0, 0, width, height, outPixels );  
        return dest;  
    }  
      
    private double noise() {  
        return Math.random()*0.5 + 0.5;  
    }  
      
    private double colorBlend(double scale, double dest, double src) {  
        return (scale * dest + (1.0 - scale) * src);  
    }  
      
    public static int clamp(int c)  
    {  
        return c > 255 ? 255 :( (c < 0) ? 0: c);  
    }  
      
    public String toString()  
    {  
        return "Sepia Tone Effect - Effect from Photoshop App";  
    }  
  
}  

標(biāo)簽: 代碼

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請與原作者聯(lián)系。

上一篇:java日期格式化工具類

下一篇:Android實現(xiàn)圖片倒影代碼