图像处理之LOMO特效
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                图像处理之LOMO特效
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                一說到LOMO特效,大家還是很熟悉的,先不廢話,先把實現效果貼上再說。
原圖:
 
lomo效果
 
按照我的理解,簡單來說就是在原圖上加了一個圓形的alpha遮罩。中間的透明度較高,周圍的透明度較低,顏色較暗,形成了特殊的視覺效果。
下面直接貼代碼啦。
package algorithm.lomo;import java.awt.image.BufferedImage;/*** 經典LOMO特效* */ public class ClassicalLomo {/*** lomo特效:作用于radius為半徑的圓內* * @param image* @param radius* */public static BufferedImage getImage(BufferedImage image, int radius){int width = image.getWidth();int height = image.getHeight();// 新建一個與源圖像大小相等的新圖像BufferedImage outputImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);// 掃描每個像素點for (int y = 0; y < height; y++){for (int x = 0; x < width; x++){int distance = getDistance(y, x, height / 2, width / 2);// 在半徑外的點直接設置為黑色if (distance > radius){outputImage.setRGB(x, y, getRGB(0, 0, 0));}// 依據點到圖像中點的距離設置像素的顏色// 模擬一個漸變的alpha遮罩的效果else{int[] rgb = getSplitRGB(image.getRGB(x, y));float ratio = (float) (1 - distance * 1.0 / radius);int r = (int) (rgb[0] * ratio);int g = (int) (rgb[1] * ratio);int b = (int) (rgb[2] * ratio);outputImage.setRGB(x, y, ImgUtil.getRGB(r, g, b));}}}return outputImage;}/*** 將r,g,b分量轉換成一個完整的rgb值* * @param r* @param g* @param b* */public static int getRGB(int r, int g, int b){r = r << 16;g = g << 8;return (r | g | b);}/*** 將rgb保存在數組中* * @param rgb* */public static int[] getSplitRGB(int rgb){int[] rgbs = new int[3];rgbs[0] = (rgb & 0xff0000) >> 16;rgbs[1] = (rgb & 0xff00) >> 8;rgbs[2] = (rgb & 0xff);return rgbs;}/*** 獲取兩點之間的距離* * @param x1* 第一個點的X坐標* @param y1* 第一個點的y坐標* @param x2* 第二個點的X坐標* @param y2* 第二個點的y坐標* */public static int getDistance(int x1, int y1, int x2, int y2){int x = x1 - x2;int y = y1 - y2;return (int) Math.sqrt(x * x + y * y);} }
 
總結
以上是生活随笔為你收集整理的图像处理之LOMO特效的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: beta 值和 M 值: 衡量样本甲基化
- 下一篇: Alpha测试与Beta测试
