{"id":44065,"date":"2020-04-15T18:24:04","date_gmt":"2020-04-15T09:24:04","guid":{"rendered":"https:\/\/www.charlezz.com\/?p=44065"},"modified":"2020-04-24T17:02:32","modified_gmt":"2020-04-24T08:02:32","slug":"%ec%95%88%eb%93%9c%eb%a1%9c%ec%9d%b4%eb%93%9c%ec%97%90%ec%84%9c-blur%ed%9a%a8%ea%b3%bc-%ea%b5%ac%ed%98%84%ed%95%98%ea%b8%b0-%ec%84%b1%eb%8a%a5-%ea%b0%9c%ec%84%a0-%eb%b0%8f-liveblur-%ea%b5%ac","status":"publish","type":"post","link":"https:\/\/charlezz.com\/?p=44065","title":{"rendered":"\uc548\ub4dc\ub85c\uc774\ub4dc\uc5d0\uc11c blur\ud6a8\uacfc \uad6c\ud604\ud558\uae30 : \uc131\ub2a5 \uac1c\uc120 \ubc0f LiveBlur \uad6c\ud604\ud558\uae30"},"content":{"rendered":"<h1>\uc548\ub4dc\ub85c\uc774\ub4dc\uc5d0\uc11c blur\ud6a8\uacfc \uad6c\ud604\ud558\uae30 : \uc131\ub2a5 \uac1c\uc120 \ubc0f LiveBlurView \uad6c\ud604\ud558\uae30<\/h1>\n<p><a href=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2020\/04\/photo-1497864979123-ef3595423b92.jpeg\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2020\/04\/photo-1497864979123-ef3595423b92-1024x683.jpeg\" alt=\"\" width=\"750\" height=\"500\" class=\"aligncenter size-large wp-image-44020\" srcset=\"https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2020\/04\/photo-1497864979123-ef3595423b92-1024x683.jpeg 1024w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2020\/04\/photo-1497864979123-ef3595423b92-300x200.jpeg 300w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2020\/04\/photo-1497864979123-ef3595423b92-768x512.jpeg 768w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2020\/04\/photo-1497864979123-ef3595423b92-360x240.jpeg 360w\" sizes=\"(max-width: 750px) 100vw, 750px\" \/><\/a><\/p>\n<p>\uc774\ubc88 \ud3ec\uc2a4\ud305\uc740 \uc9c0\ub09c\uc2dc\uac04\uc5d0 \ub2e4\ub8ec <a href=\"https:\/\/www.charlezz.com\/?p=44019\">Box Blur<\/a>\uc640 <a href=\"https:\/\/www.charlezz.com\/?p=44043\">StackBlur<\/a>\ud3b8\uc5d0 \uc774\uc5b4 \uc138\ubc88\uc9f8 \uc774\uc57c\uae30\uc785\ub2c8\ub2e4.<\/p>\n<p>\uc2a4\ud0dd\ube14\ub7ec(Stack Blur)\ub294 2Pass \uc804\ub7b5\uc744 \uc0ac\uc6a9\ud558\uc5ec \ube60\ub978 \uc774\ubbf8\uc9c0 \ud504\ub85c\uc138\uc2f1 \uc2dc\uac04\uacfc \ud488\uc9c8\uc744 \ubcf4\uc7a5\ud55c\ub2e4.<br \/>\n\uc2a4\ud0dd\ube14\ub7ec \uc54c\uace0\ub9ac\uc998\uacfc\ub294 \ubcc4\uac1c\ub85c \uc548\ub4dc\ub85c\uc774\ub4dc\uc5d0\uc11c \uc870\uae08 \ub354 \uc131\ub2a5\uc744 \uac1c\uc120\ud558\ub294 \ubc29\ubc95\uc5d0 \ub300\ud574\uc11c \uc54c\uc544\ubcf4\uc790.<\/p>\n<h2>\uc131\ub2a5 \uac1c\uc120 \ubc29\ubc95<\/h2>\n<p>\uc774\uc804 \uc2dc\uac04\uc5d0 \ub2e4\ub8ec \uc2a4\ud0dd\ube14\ub7ec\ub85c HD\ud488\uc9c8\uc758 \uc774\ubbf8\uc9c0\ub97c \ucc98\ub9ac \ud560 \uacbd\uc6b0 \ud3c9\uade0 60ms\uc758 \uc2dc\uac04\uc774 \uc18c\uc694\ub418\uc5c8\ub2e4. (s9\uae30\uc900)<\/p>\n<p>\uc774\ubbf8\uc9c0 \ud55c\uc7a5\uc744 \ucc98\ub9ac\ud55c\ub2e4\uace0 \uc0dd\uac01\ud558\uba74 \uadf8\ub9ac \uae34 \uc2dc\uac04\uc774 \uc544\ub2c8\uba70, \uadf8 \uc815\ub3c4\ub294 \uc0ac\uc6a9\uc790\ub4e4\ub3c4 \uae30\ub2e4\ub824\uc904 \uc218 \uc788\ub294 \uc2dc\uac04\uc774\ub2e4. \ud558\uc9c0\ub9cc \uc5f0\uc18d\uc801\uc778 \uc774\ubbf8\uc9c0\ub4e4\uc744 \uc2e4\uc2dc\uac04\uc73c\ub85c \ube14\ub7ec\ucc98\ub9ac\ub97c \ud574\uc57c\ud558\ub294 \uacbd\uc6b0\uac00 \uc0dd\uae34\ub2e4\uba74 \uc774\uc57c\uae30\uac00 \ub2ec\ub77c\uc9c4\ub2e4.\uc608\ub97c\ub4e4\uba74 \ub2e4\uc74c\uacfc \uac19\uc740 \uc571\uc744 \uad6c\ud604\ud55c\ub2e4\uace0 \uc0dd\uac01\ud574\ubcf4\uc790. \uc774\ub54c\ub294 \uc815\ub9d0 \ube60\ub978 \ube14\ub7ec\ucc98\ub9ac\uac00 \ud544\uc694\ud558\ub2e4<\/p>\n<div style=\"width: 360px;\" class=\"wp-video\"><!--[if lt IE 9]><script>document.createElement('video');<\/script><![endif]--><br \/>\n<video class=\"wp-video-shortcode\" id=\"video-44065-1\" width=\"360\" height=\"736\" loop=\"1\" autoplay=\"1\" preload=\"metadata\" controls=\"controls\"><source type=\"video\/mp4\" src=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2020\/04\/screencapture-1586938043604.mp4?_=1\" \/><a href=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2020\/04\/screencapture-1586938043604.mp4\">https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2020\/04\/screencapture-1586938043604.mp4<\/a><\/video><\/div>\n<p>&nbsp;<\/p>\n<p style=\"text-align: center;\"><em>(<a href=\"https:\/\/github.com\/Charlezz\/BlurSample\/blob\/master\/blur\/src\/main\/java\/com\/charlezz\/blur\/LiveBlurView.java\">LiveBlurView<\/a>\ub97c \uad6c\ud604\ud55c \ubaa8\uc2b5)<\/em><\/p>\n<p>\uc77c\ubc18\uc801\uc778 \uc548\ub4dc\ub85c\uc774\ub4dc \ub514\ubc14\uc774\uc2a4\uc758 \ub514\uc2a4\ud50c\ub808\uc774\ub294 60Hz\uc758 \uc8fc\uc0ac\uc728\ub85c \ud654\uba74\uc744 \uac31\uc2e0\ud55c\ub2e4. <br \/>\n(\ucd5c\uadfc\ub4e4\uc5b4 120Hz\uc774\uc0c1\uc758 \ub514\uc2a4\ud50c\ub808\uc774\ub97c \uac00\uc9c4 \uae30\uae30\ub3c4 \ucd9c\uc2dc\ub418\uace0 \uc788\uc9c0\ub9cc, \uc5ec\uae30\uc5d0\uc11c\ub294 60Hz\ub77c\uace0 \uac00\uc815\ud558\uc790. )<\/p>\n<p>60Hz\ub85c \ud654\uba74\uc744 \uac31\uc2e0\ud55c\ub2e4\ub294 \uc758\ubbf8\ub294, 1\ucd08\uc5d0 60\ud504\ub808\uc784(\uc774\ubbf8\uc9c0)\uc744 \ud654\uba74\uc5d0 \uadf8\ub824\ub0b8\ub2e4\ub294 \ub73b\uc774\ub2e4.<br \/>\n1\ucd08\ub294 1000ms\uc774\ubbc0\ub85c \ud55c \ud504\ub808\uc784\uc744 \uadf8\ub824\ub0b4\ub294\ub370 \ud544\uc694\ud55c \uc2dc\uac04\uc740 \ucd5c\ub300 1000ms \/ 60 = 16.6ms \ub77c\ub294 \uacc4\uc0b0\uc774 \ub098\uc628\ub2e4.\u00a0<\/p>\n<p>\ub9cc\uc57d \uc704\uc758 \uc601\uc0c1\uacfc \uac19\uc740 \ub0b4\uc6a9\uc744 \uad6c\ud604\ud55c\ub2e4\uace0 \uac00\uc815\ud558\uba74 \ud558\ub098\uc758 \ud504\ub808\uc784\uc744 16.6ms \uc774\ub0b4\uc5d0 \ube14\ub7ec\ucc98\ub9ac\ud558\uace0 \ub80c\ub354\ub9c1\uae4c\uc9c0 \uc644\ub8cc\ud574\uc57c\ud55c\ub2e4.<\/p>\n<h3>\uc774\ubbf8\uc9c0\ub97c \ucd95\uc18c\ud558\uc790(Downsampling)<\/h3>\n<p>\uc774\ubbf8\uc9c0 \uc804\uccb4\ub97c \uc6d0\ubcf8\ud574\uc0c1\ub3c4 \uadf8\ub300\ub85c \ube14\ub7ec\ucc98\ub9ac \ud560 \ud544\uc694 \uc5c6\ub2e4. \uc774\ubbf8\uc9c0\uac00 \ud074\uc218\ub85d \ube14\ub7ec\ucc98\ub9ac\ud558\ub294\ub370 \ub354 \ub9ce\uc740 \uc2dc\uac04\uc774 \ud544\uc694\ud558\uac8c \ub418\uae30 \ub584\ubb38\uc774\ub2e4. \uc6d0\ubcf8\uc774\ubbf8\uc9c0\ub97c \ube14\ub7ec \ucc98\ub9ac\ud558\ub098 \ucd95\uc18c\ub41c \uc774\ubbf8\uc9c0\ub97c \ube14\ub7ec \ucc98\ub9ac\ud558\ub098 \uc0ac\ub78c\ub208\uc73c\ub85c \ubcf4\uae30\uc5d0\ub294 \ud070 \ucc28\uc774\uac00 \uc5c6\ub2e4. \uc5b4\uc9dc\ud53c radius\uac12\uc774 \ub192\uc73c\uba74 \ub192\uc744\uc218\ub85d \uad6c\ubd84\ud558\uae30\ub3c4 \ud798\ub4e4\uc5b4\uc9c4\ub2e4. \ud070 \uc774\ubbf8\uc9c0\ub97c \ub2e4\ub8e8\ub2e4 \ubcf4\uba74 OOM\uc774 \ubc1c\uc0dd\ud558\uae30\ub3c4 \uc27d\ub2e4. \ud2b9\ud788\ub098 \uc548\ub4dc\ub85c\uc774\ub4dc \ucc98\ub7fc \uc81c\ud55c\ub41c heap\uba54\ubaa8\ub9ac \uc601\uc5ed\uc744 \uac16\ub294 \ud50c\ub7ab\ud3fc\uc5d0\uc11c\ub294 \uc800\ud574\uc0c1\ub3c4 \uc774\ubbf8\uc9c0\ub85c \ub2e4\ub8e8\ub294\uac8c \uc774\uc0c1\uc801\uc774\ub2e4.<\/p>\n<p>\ub2e4\uc74c\uacfc \uac19\uc774 \ub2e4\uc6b4\uc0d8\ud50c\ub9c1\ub41c Bitmap \uc73c\ub85c \uc774\ubbf8\uc9c0\ub97c \ubd88\ub7ec\uc62c \uc218 \uc788\ub2e4.<\/p>\n<pre class=\"lang: decode:true\">final BitmapFactory.Options options = new BitmapFactory.Options();\r\noptions.inSampleSize = 8;\r\nBitmap blurTemplate = BitmapFactory.decodeResource(getResources(), R.drawable.myImage, options);<\/pre>\n<p>inSampleSize\ub97c 8\ub85c \ub2e4\uc6b4\uc0d8\ud50c\ub9c1 \ud558\ub294\uacbd\uc6b0 \uc6d0\ubcf8\uc774\ubbf8\uc9c0\uc758 1\/64 \uc0ac\uc774\uc988\ub85c \ub85c\ub4dc \ub41c\ub2e4. \uc801\ub2f9\ud55c \uc0d8\ud50c \uc0ac\uc774\uc988\ub97c \uc0ac\uc6a9\ud558\ub418 \uc2a4\ucf00\uc77c\ub9c1\uc73c\ub85c \uc778\ud55c \ud488\uc9c8 \uc800\ud558\ub97c \ud53c\ud558\ub824\uba74 2\uc758 \uac70\ub4ed\uc81c\uacf1\uac12 (2^n)\uc73c\ub85c \uc9c0\uc815\ud558\ub294 \uac83\uc774 \uc88b\ub2e4.<\/p>\n<p>\ub2e4\ub978 \uc194\ub8e8\uc158\uc744 \uc774\uc6a9\ud558\ub294 \uac83\ubcf4\ub2e4 \uc774\ubbf8\uc9c0\ub97c \ucd95\uc18c\ud558\ub294 \uac83\uc774 \uc774\ubbf8\uc9c0 \ud504\ub85c\uc138\uc2f1(\ube14\ub7ec\ucc98\ub9ac) \uc2dc\uac04\uc744 \uc904\uc774\ub294 \uac00\uc7a5 \uc88b\uc740 \ubc29\ubc95\uc774\ub2e4.<\/p>\n<p>\ub354 \uc790\uc138\ud55c \ub0b4\uc6a9\uc740 \uad6c\uae00 \uacf5\uc2dd \ubb38\uc11c\ub97c \ucc38\uc870\ud558\uc790 (<a href=\"https:\/\/developer.android.com\/topic\/performance\/graphics\/load-bitmap?hl=ko#load-bitmap\">\ucd95\uc18c \ubc84\uc804\uc744 \uba54\ubaa8\ub9ac\ub85c \ub85c\ub4dc<\/a>)<\/p>\n<h3>\uac00\ub2a5\ud558\ub2e4\uba74 Bitmap \uac1d\uccb4\ub97c \uc7ac\uc0ac\uc6a9\ud558\uc790<\/h3>\n<p>\uc2e4\uc2dc\uac04\uc73c\ub85c \ube14\ub7ec\ucc98\ub9ac\ub97c \ud558\uac70\ub098 \uc774\uc640 \uc720\uc0ac\ud558\uac8c \uc5ec\ub7ec \uc774\ubbf8\uc9c0\ub97c \ube14\ub7ec\ucc98\ub9ac \ud574\uc57c\ud558\ub294 \uacbd\uc6b0\ub97c \uc0dd\uac01\ud574\ubcf4\uc790. \uba54\ubaa8\ub9ac\uc5d0 Bitmap\uc744 \uc5ec\ub7ec\ubc88 \ub85c\ub4dc\ud558\uba74 \uba54\ubaa8\ub9ac\uac00 \ubd80\uc871\ud574\uc9c8 \uc218 \uc788\uc9c0\ub9cc, \uadf8\ubcf4\ub2e4 \uba54\ubaa8\ub9ac\ub97c \ud560\ub2f9\ud558\ub294 \uc2dc\uac04 \ub610\ud55c \uc791\uc9c0 \uc54a\uae30 \ub54c\ubb38\uc5d0 Bitmap\uc744 \uba64\ubc84\ubcc0\uc218\ub85c \uad00\ub9ac\ud558\uc5ec \uce90\uc2dc\ub41c \uc0c1\ud0dc\ub85c \uc720\uc9c0\ud558\ub294 \uac83\uc774 \uc88b\ub2e4. \ud56d\uc0c1 \ub3d9\uc77c\ud55c \ubcc0\uc218\ub97c \uc0ac\uc6a9\ud558\uc5ec \uac00\ube44\uc9c0 \ucf5c\ub809\uc158\uc744 \ucd5c\uc18c\ud654 \ud560\uc218\ub3c4 \uc788\ub2e4.<\/p>\n<p>\ub610\ud55c BitmapFactory.Options.inBitmap \uc635\uc158\uc744 \ud65c\uc6a9\ud574\ubcf4\uc790. \uc774 \uc635\uc158\uc744 \uc124\uc815\ud558\uba74 Options \uac1c\uccb4\ub97c \ub514\ucf54\ub529\ud558\ub294 \uba54\uc11c\ub4dc\ub294 \ucf58\ud150\uce20\ub97c \ub85c\ub4dc\ud560 \ub54c \uae30\uc874 \ube44\ud2b8\ub9f5\uc744 \uc7ac\uc0ac\uc6a9\ud558\ub3c4\ub85d \uc2dc\ub3c4\ud55c\ub2e4.\u00a0<\/p>\n<h3>RenderScript \ub610\ub294 NDK\ub97c \uc0ac\uc6a9\ud558\uc790<\/h3>\n<h4>RenderScript<\/h4>\n<p>\ub80c\ub354 \uc2a4\ud06c\ub9bd\ud2b8(Render Script)\ub294 \uacc4\uc0b0 \uc9d1\uc57d\uc801\uc778 \uc791\uc5c5\uc744 Android\uc5d0\uc11c \uace0\uc131\ub2a5\uc73c\ub85c \uc2e4\ud589\ud558\uae30 \uc704\ud55c \ud504\ub808\uc784\uc6cc\ud06c\ub2e4. \ub80c\ub354\uc2a4\ud06c\ub9bd\ud2b8\ub294 \uba40\ud2f0 \ucf54\uc5b4 \ubc0f GPU \ub4f1\uc744 \uc0ac\uc6a9\ud558\uc5ec \ubcd1\ub82c\uc801\uc73c\ub85c \ub370\uc774\ud130\ub97c \uc5f0\uc0b0\ud558\ub294\ub370 \uc801\ud569\ud558\uba70, \uc774\ubbf8\uc9c0 \ucc98\ub9ac\uc5d0 \ud2b9\ud788 \uc720\uc6a9\ud558\ub2e4.<\/p>\n<h4>NDK(Native Development Kit)<\/h4>\n<p>NDK\ub294 \uc548\ub4dc\ub85c\uc774\ub4dc \uc571\uc5d0\uc11c C \ub610\ub294 C++ \ucf54\ub4dc\ub97c \ud65c\uc6a9\ud560 \uc218 \uc788\ub3c4\ub85d \ud574\uc900\ub2e4. \uc18c\uc2a4\ucf54\ub4dc\ub97c \uc791\uc131\ud558\uac70\ub098 \uae30\uc874\uc5d0 \ube4c\ub4dc\ub41c (prebuilt) \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \ud65c\uc6a9\ud560 \uc218\ub3c4 \uc788\ub2e4.<\/p>\n<p>NDK\ub294 \ub300\ubd80\ubd84\uc758 \uc571\uac1c\ubc1c\uc790\uc5d0\uac8c\ub294 \uc720\uc6a9\ud558\uc9c0 \uc54a\ub2e4. \ud558\uc9c0\ub9cc \uac8c\uc784, \uc774\ubbf8\uc9c0 \ucc98\ub9ac, \ubb3c\ub9ac \uc2dc\ubbac\ub808\uc774\uc158 \uac19\uc740 \uacc4\uc0b0 \uc9d1\uc57d\uc801\uc778 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \ub9cc\ub4dc\ub294 \uacbd\uc6b0 Java \ub610\ub294 Kotlin\uc73c\ub85c\ub9cc \uc791\uc131\ub41c \uc571\ubcf4\ub2e4 \uc131\ub2a5\uc744 \ub354 \ub04c\uc5b4\uc62c\ub9b4 \uc218 \uc788\ub2e4.<\/p>\n<p>RenderScript\uc640 NDK\uc758 \ud2b9\uc9d5\uc744 \uc694\uc57d\ud558\uba74 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n<table style=\"height: 143px; width: 100%; border-collapse: collapse; border-style: solid; border-color: #000000;\">\n<tbody>\n<tr style=\"height: 27px;\">\n<td style=\"width: 50%; height: 27px; background-color: #ff7373; text-align: center; border-style: solid; border-color: #000000;\">RenderScript<\/td>\n<td style=\"width: 50%; height: 27px; background-color: #ff7373; text-align: center; border-style: solid; border-color: #000000;\">NDK<\/td>\n<\/tr>\n<tr style=\"height: 29px;\">\n<td style=\"width: 50%; height: 29px; border-style: solid; border-color: #000000; text-align: center;\">CPU, GPU \ub610\ub294 \uae30\ud0c0 \ucc98\ub9ac \uc7a5\uce58\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc131\ub2a5\uc744 \ud5a5\uc0c1 \uc2dc\ud0b4<\/td>\n<td style=\"width: 50%; height: 29px; border-style: solid; border-color: #000000; text-align: center;\">\ubc94\uc6a9\uc801\uc778 C++ \ucf54\ub4dc \ubc0f \ub77c\uc774\ube0c\ub7ec\ub9ac \uc0ac\uc6a9<\/td>\n<\/tr>\n<tr style=\"height: 29px;\">\n<td style=\"width: 50%; height: 29px; border-style: solid; border-color: #000000; text-align: center;\">\ub354 \uc26c\uc6b4 \ubcd1\ub82c\ucc98\ub9ac<\/td>\n<td style=\"width: 50%; height: 29px; border-style: solid; border-color: #000000; text-align: center;\">API\uc5d0 \ub300\ud55c \uc81c\uc57d\uc0ac\ud56d\uc774 \uc5c6\ub2e4<\/td>\n<\/tr>\n<tr style=\"height: 29px;\">\n<td style=\"width: 50%; height: 29px; border-style: solid; border-color: #000000; text-align: center;\">\uc544\ud0a4\ud14d\ucc98 \ub3c5\ub9bd\uc131<\/td>\n<td style=\"width: 50%; height: 29px; border-style: solid; border-color: #000000; text-align: center;\">\uc131\ub2a5\uc744 \ud5a5\uc0c1\uc2dc\ud0a4\uc9c0\ub9cc \uc544\ud0a4\ud14d\ucc98\ubcc4\ub85c \ucef4\ud30c\uc77c\ud574\uc57c\ud568<\/td>\n<\/tr>\n<tr style=\"height: 29px;\">\n<td style=\"width: 50%; height: 29px; border-style: solid; border-color: #000000; text-align: center;\">\uc774\ubbf8\uc9c0 \ucc98\ub9ac, 3D\ub80c\ub354\ub9c1, \ucef4\ud4e8\ud130\ube44\uc804\uc5d0 \uc801\ud569<\/td>\n<td style=\"width: 50%; height: 29px; border-style: solid; border-color: #000000; text-align: center;\">\ub514\ubc84\uae45\uc774 \ub354 \uc27d\ub2e4<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2><a href=\"https:\/\/github.com\/Charlezz\/BlurSample\/blob\/master\/blur\/src\/main\/java\/com\/charlezz\/blur\/LiveBlurView.java\">LiveBlurView<\/a> \uad6c\ud604\ud558\uae30<\/h2>\n<p>\uc55e\uc5d0\uc11c \uc5b8\uae09\ud55c \ub0b4\uc6a9\ub4e4\uc744 \uc885\ud569\ud558\uc5ec \uc2e4\uc2dc\uac04\uc73c\ub85c \ube14\ub7ec\ucc98\ub9ac\ub97c \ud558\ub294 View\ub97c \uad6c\ud604\ud560 \uc218 \uc788\ub2e4.<\/p>\n<ol>\n<li>Activity\uac00 \uac00\uc9c0\uace0 \uc788\ub294 Window\ub85c\ubd80\ud130 \ucd5c\uc0c1\uc704 DecorView\ub97c \uac00\uc838\uc628\ub2e4. (\ub208\uc5d0 \ubcf4\uc774\ub294 \ud654\uba74 <span>\u2248<\/span> DecorView)<\/li>\n<li>DecorView\ub85c\ubd80\ud130 LiveBlurView\uc758 \uc601\uc5ed\ub9cc\ud07c \ud06c\ub86d\ud558\uc5ec \ub2e4\uc6b4\uc0d8\ud50c\ub9c1\ub41c Bitmap\uc73c\ub85c \uad00\ub9ac\ud55c\ub2e4.<\/li>\n<li>\ud06c\ub86d\ud55c Bitmap\uc744 Blur\ucc98\ub9ac \ud55c\ub2e4. (C++\ub85c \uc791\uc131\ub41c StackBlur \uc0ac\uc6a9)<\/li>\n<li>LiveBlurView\uc5d0 Blur\ucc98\ub9ac\ub41c \uacb0\uacfc\ub97c \uadf8\ub9b0\ub2e4.<\/li>\n<\/ol>\n<p>\uc774 \ub0b4\uc6a9\uc744 \ubc18\ubcf5\ud558\uba74 \uc2e4\uc2dc\uac04\uc73c\ub85c Blur\ucc98\ub9ac\ub41c \ud654\uba74\uc744 \ud655\uc778\ud560 \uc218 \uc788\ub2e4.<\/p>\n<p>LiveBlurView\uc5d0\uc11c 300dp * 300dp \uae30\uc900\uc73c\ub85c \ube14\ub7ec\ucc98\ub9ac\ud558\ub294\ub370 \ud3c9\uade0 4ms\uc815\ub3c4 \uc18c\uc694\ub418\ub294\uac83\uc744 \ud655\uc778\ud588\ub2e4. \ud654\uba74\uc804\uccb4\ub97c Blur\ucc98\ub9ac\ud574\ub3c4 S9\uc5d0\uc11c\ub294 \ud504\ub808\uc784\ub4dc\ub78d\uc774 \uc5c6\uc5c8\uc73c\ub098, \uc800\uc0ac\uc591\uae30\uae30\uc5d0\uc11c\ub294 \ud504\ub808\uc784\ub4dc\ub78d\uc774 \ubc1c\uc0dd\ud560\uc9c0\ub3c4 \ubaa8\ub974\uaca0\ub2e4.<\/p>\n<h2>\ub9c8\uce58\uba70<\/h2>\n<p>\uc77c\ubc18\uc801\uc778 \uacbd\uc6b0 RenderScript\uac00 C++\ub85c \uc791\uc131\ub41c \ucf54\ub4dc\ubcf4\ub2e4 \ub354 \ube60\ub974\ub2e4\uace0 \uc774\uc804 \uc2dc\uac04\uc5d0 \uc774\uc57c\uae30 \ud588\uc9c0\ub9cc, \uc2e4\uc81c\ub85c \uc0d8\ud50c \uc571\uc744 \uc791\uc131\ud574 \ubcf8 \uacb0\uacfc C++\ucf54\ub4dc\ub85c \uc791\uc131\ub41c StackBlur \uc54c\uace0\ub9ac\uc998\uc774 \ub354 \ube68\ub790\ub2e4. \uc77c\ub2e8 RenderScript\uc758 \uacbd\uc6b0 \ucd08\uae30 \uba54\ubaa8\ub9ac \ud560\ub2f9\uc5d0\uc11c \ub9ce\uc740 \uc2dc\uac04\uc774 \uc18c\uc694\ub418\ub294 \uac83\uc744 \ud655\uc778\ud588\uc9c0\ub9cc, \uadf8\ub798\ub3c4 \uc774\ubbf8\uc9c0 \ucc98\ub9ac \uc2dc\uac04\uc740 C++\ubcf4\ub2e4 \ube60\ub974\ub9ac\ub77c \uc608\uce21 \ud588\ub294\ub370 \uadf8\ub807\uc9c0 \uc54a\uc558\ub2e4.\u00a0 \ucd94\uce21\ud558\uac74\ub370 RenderScript\uc758 \uacbd\uc6b0 GPU\ub97c \ud3ec\ud568\ud55c \ub2e4\ub978 \uc7a5\uce58\ub3c4 \uc0ac\uc6a9\ud558\ub294\ub370 \uc774 \ubd80\ubd84\uc5d0\uc11c \ubcd1\ubaa9\uc774 \ubc1c\uc0dd\ud558\uc9c0 \uc54a\uc558\uc744\uae4c \ucd94\uce21\ud574\ubcf8\ub2e4. \uc77c\ubd80\uae30\uae30\uc5d0\uc11c\ub294 RenderScript\uac00 \ub354 \ube60\ub974\uac8c \ub3d9\uc791\ud560\uc9c0\ub3c4 \ubaa8\ub974\uaca0\ub2e4. (\uc544\ub2c8\uba74 \ub0b4\uac00 RenderScript\uc6a9 \uc2a4\ud06c\ub9bd\ud2b8\ub97c \uc798\ubabb \uc791\uc131\ud588\uac70\ub098&#8230;)<\/p>\n<p><iframe loading=\"lazy\" width=\"480\" height=\"359\" src=\"https:\/\/giphy.com\/embed\/bPTXcJiIzzWz6\" frameborder=\"0\" class=\"giphy-embed\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/p>\n<p>\uc0d8\ud50c \uc571 \ubc0f <a href=\"https:\/\/github.com\/Charlezz\/BlurSample\/blob\/master\/blur\/src\/main\/java\/com\/charlezz\/blur\/LiveBlurView.java\">LiveBlurView<\/a> \ucf54\ub4dc\ub294 <a href=\"https:\/\/github.com\/Charlezz\/BlurSample\">github<\/a>\uc5d0\uc11c \ud655\uc778 \ud558\uc2e4 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\uc548\ub4dc\ub85c\uc774\ub4dc\uc5d0\uc11c blur\ud6a8\uacfc \uad6c\ud604\ud558\uae30 : \uc131\ub2a5 \uac1c\uc120 \ubc0f LiveBlurView \uad6c\ud604\ud558\uae30 \uc774\ubc88 \ud3ec\uc2a4\ud305\uc740 \uc9c0\ub09c\uc2dc\uac04\uc5d0 \ub2e4\ub8ec Box Blur\uc640 StackBlur\ud3b8\uc5d0 \uc774\uc5b4 \uc138\ubc88\uc9f8 \uc774\uc57c\uae30\uc785\ub2c8\ub2e4. \uc2a4\ud0dd\ube14\ub7ec(Stack Blur)\ub294 2Pass \uc804\ub7b5\uc744 \uc0ac\uc6a9\ud558\uc5ec \ube60\ub978 \uc774\ubbf8\uc9c0 \ud504\ub85c\uc138\uc2f1 \uc2dc\uac04\uacfc \ud488\uc9c8\uc744 \ubcf4\uc7a5\ud55c\ub2e4. \uc2a4\ud0dd\ube14\ub7ec \uc54c\uace0\ub9ac\uc998\uacfc\ub294 \ubcc4\uac1c\ub85c \uc548\ub4dc\ub85c\uc774\ub4dc\uc5d0\uc11c \uc870\uae08 \ub354 \uc131\ub2a5\uc744 \uac1c\uc120\ud558\ub294 \ubc29\ubc95\uc5d0 \ub300\ud574\uc11c \uc54c\uc544\ubcf4\uc790. \uc131\ub2a5 \uac1c\uc120 \ubc29\ubc95 \uc774\uc804 \uc2dc\uac04\uc5d0 \ub2e4\ub8ec \uc2a4\ud0dd\ube14\ub7ec\ub85c HD\ud488\uc9c8\uc758 \uc774\ubbf8\uc9c0\ub97c [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"inline_featured_image":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0},"categories":[24,5],"tags":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/posts\/44065"}],"collection":[{"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=44065"}],"version-history":[{"count":4,"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/posts\/44065\/revisions"}],"predecessor-version":[{"id":44087,"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/posts\/44065\/revisions\/44087"}],"wp:attachment":[{"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=44065"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=44065"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=44065"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}