{"id":432,"date":"2012-01-21T11:41:34","date_gmt":"2012-01-21T11:41:34","guid":{"rendered":"http:\/\/brain.dailyon.net\/?p=432"},"modified":"2012-01-21T11:41:34","modified_gmt":"2012-01-21T11:41:34","slug":"jsp-thumbnails%ec%8d%b8%eb%84%a4%ec%9d%bc-%ec%b2%98%eb%a6%ac","status":"publish","type":"post","link":"https:\/\/blog.goorigo.com\/?p=432","title":{"rendered":"jsp : Thumbnails(\uc378\ub124\uc77c) \ucc98\ub9ac"},"content":{"rendered":"<p>imagemagick \uc740 jai \ubcf4\ub2e4 \ud5a5\uc0f9\ub41c \uae30\ub2a5\uacfc quality\ub97c \uc81c\uacf5 \ud569\ub2c8\ub2e4.<br \/>\n[win] \ub2e4\uc6b4\ub85c\ub4dc : http:\/\/www.imagemagick.org\/script\/binary-releases.php#windows<br \/>\n[linux] \ub2e4\uc6b4\ub85c\ub4dc \ubc0f \uc124\uce58 <\/p>\n<p>http:\/\/www.imagemagick.org\/script\/index.php<br \/>\n\ubc14\ub85c \ub2e4\uc6b4\ub85c\ub4dc &#8211; ftp:\/\/ftp.imagemagick.org\/pub\/ImageMagick\/ImageMagick.tar.gz<br \/>\ntar zxvf ImageMagick.tar.gz<br \/>\ncd ImageMagick-6.5.9-0<br \/>\n.\/configure &#8211;prefix=\/usr\/local\/ImageMagick &#8211;with-quantum-depth=32 &#8211;with-jpeg=yes &#8211;with-png=yes &#8211;with-tiff=yes &#8211;with-zlib=yes &#8211;with-xml=yes &#8211;without-perl<br \/>\nmake<br \/>\nmake install<br \/>\nconfigure \uc758 \uc635\uc158\uc911 &#8211;with-quantum-depth=32 \ub294 \ubcf8\uc778\uc758 \uc11c\ubc84 \uc0ac\uc591\uc774 \uc88b\uc9c0 \uc54a\uc740 \uc774\uc0c1 \uc6ec\ub9cc\ud558\uba74 \uc0dd\ub7b5\ud558\uc790. (CPU\uac00 1\uac1c\uba74\uc11c \uba54\ubaa8\ub9ac 4\uae30\uac00 \uc774\ud558)<\/p>\n<p>\uc124\uce58 \ud655\uc778<br \/>\n\/usr\/local\/ImagicMagick\/bin\/Magick-config &#8211;version<br \/>\n\/usr\/local\/ImagicMagick\/bin\/convert -list format<\/p>\n<p>\ud328\uc2a4\ub4f1\ub85d<br \/>\nPATH=$PATH:\/usr\/local\/ImageMagick\/bin\/<\/p>\n<p>[\uc8fc\uc758\uc0ac\ud56d]<br \/>\nlibpng\ub098  libjpeg \uac00 \uc5c6\uc73c\uba74  ImageMagicK\ub97c \uc124\uce58\ud574\ub3c4 \uc0ac\uc6a9\uc744 \ud560 \uc218 \uc5c6\uace0.  \uc544\ub798\uc640 \uac19\uc740 \uc5d0\ub7ec\uac00 \ub09c\ub2e4. <\/p>\n<p>convert: no decode delegate for this image format <\/p>\n<p>\uadf8\ub798\uc11c \ub450 \uac1c\ub97c \uc124\uce58 \ud574\uc900\ub2e4. <\/p>\n<p>yum install libpng.x86_64<br \/>\nyum install libjpeg.x86_64<\/p>\n<p>\ud639\uc2dc\ub098 \ud574\uc11c<br \/>\n libjpeg-devel.x86_64\uc640 libjpeg-static.x86_64\ub3c4 \uc124\uce58\ud558\uae34 \ud588\uc73c\ub098 \ubcc4 \uc0c1\uad00 \uc5c6\uc5b4 \ubcf4\uc784.<\/p>\n<p>\uadf8 \ub2e4\uc74c\uc5d0  ImageMagicK \ub97c \uc124\uce58\ud55c\ub2e4.<br \/>\n\ud30c\uc77c\uc744 \ub2e4\uc6b4\ubc1b\uace0 \uc124\uce58!<\/p>\n<p>wget ftp:\/\/ftp.imagemagick.org\/pub\/ImageMagick\/ImageMagick.tar.gz<br \/>\n.\/configure &#8211;prefix=\/\uc124\uce58\ud560 \uacbd\ub85c<br \/>\n make<br \/>\nmake install<\/p>\n<p>[ \uc608\uc81c : java source ]<\/p>\n<p><code><br \/>\n\/**<br \/>\n* @param loadFile   - \uc6d0\ubcf8 \ud30c\uc77c\uba85<br \/>\n* @param saveFile   - \uc378\ub124\uc77c \ud30c\uc77c\uba85<br \/>\n* @param maxWidth   - \uc378\ub124\uc77c \ud30c\uc77c \uac00\ub85c \ud06c\uae30<br \/>\n* @param maxHeight  - \uc378\ub124\uc77c \ud30c\uc77c \uc138\ub85c \ud06c\uae30<br \/>\n* @throws InterruptedException<br \/>\n*\/<br \/>\npublic static boolean ThumImageMagicResizeCreate(String loadFile, String saveFile, int maxWidth, int maxHeight, String autoScale) throws IOException{<br \/>\nString imageMagicDir = StringUtil.nvl(SystemProperties.getProperty(\"images.magic.contextBase\"),\"\");<br \/>\nString autoSize = \"\";<br \/>\nif(!autoScale.equals(\"Y\")) autoSize = \"!\";<br \/>\nFile orgImgFile = new File(loadFile);<br \/>\nFile thumImgFile = new File(saveFile);<br \/>\nArrayList command = new ArrayList(10);<br \/>\ncommand.add(imageMagicDir+\"\/convert\");<br \/>\ncommand.add(\"-resize\");<br \/>\ncommand.add(maxWidth + \"x\" + maxHeight + autoSize);<br \/>\ncommand.add(orgImgFile.getAbsolutePath());<br \/>\ncommand.add(thumImgFile.getAbsolutePath());<br \/>\n\/\/System.out.println(\"thumbnail command String \" + command);<br \/>\nreturn exec((String[])command.toArray(new String[1]));<br \/>\n}<br \/>\npublic static boolean exec(String[] command) throws IOException{<br \/>\nProcess proc;<br \/>\ntry{<br \/>\n\/\/command \uba85\ub839\uc5b4 \uc2e4\ud589<br \/>\nproc = Runtime.getRuntime().exec(command);<br \/>\n}catch(IOException e){<br \/>\nSystem.out.println(\"IOException while trying to execute \" +command);<br \/>\nreturn false;<br \/>\n}<br \/>\nint exitStatus;<br \/>\nwhile(true){<br \/>\ntry {<br \/>\nexitStatus = proc.waitFor();<br \/>\nbreak;<br \/>\n} catch (java.lang.InterruptedException e) {<br \/>\nSystem.out.println(\"Interrupted: Ignoring and waiting\");<br \/>\n}<br \/>\n}<br \/>\nif(exitStatus != 0){<br \/>\nSystem.out.println(\"Error executing command: \" +exitStatus);<br \/>\n}<br \/>\nreturn (exitStatus == 0);<br \/>\n}<br \/>\n<\/code><\/p>\n<p>1. \ud30c\uc77c\ud3ec\ub9f7\ubcc0\uacbd<\/p>\n<p>convert image_org.gif  image_out.jpg<br \/>\n[\uc124\uba85] image_org.gif  \uc774\ubbf8\uc9c0\ub97c image_out.jpg\ub85c \ubc14\uafbc\ub2e4.<\/p>\n<p>convert image_org.png  image_out.jpg<br \/>\n[\uc124\uba85] image_org.png  \uc774\ubbf8\uc9c0\ub97c image_out.jpg\ub85c \ubc14\uafbc\ub2e4. <\/p>\n<p>2. \ud655\ub300,\ucd95\uc18c,\ub9ac\uc0ac\uc774\uc988<\/p>\n<p>convert image_org.jpg -resize 25%x25% -quality 100 image_out.jpg<br \/>\n[\uc124\uba85] image_org.jpg  \uc774\ubbf8\uc9c0\ub97c 1\/4 \ucd95\uc18c\ud55c image_out.jpg\ub85c \ubc14\uafbc\ub2e4.<\/p>\n<p>convert image_org.jpg -resize 800&#215;600 -quality 100 image_out.jpg<br \/>\n[\uc124\uba85] image_org.jpg  \uc774\ubbf8\uc9c0\ub97c 800&#215;600\ud53d\uc140\ub85c \ub9ac\uc0ac\uc774\uc988 \ud558\uc9c0\ub9cc \ube44\uc728\uc744 \uc720\uc9c0\ud558\uba70 \ud070\uc0ac\uc774\uc988 \ube44\uc728 \uae30\uc900\uc73c\ub85c image_out.jpg\ub97c \uc0dd\uc131\ud55c\ub2e4.<\/p>\n<p>convert image_org.jpg -resize 800&#215;600! -quality 100 image_out.jpg<br \/>\n[\uc124\uba85] image_org.jpg  \uc774\ubbf8\uc9c0\ub97c 800&#215;600\ud53d\uc140\ub85c \uac15\uc81c\uc801\uc73c\ub85c \ubc14\uafb8\uc5b4 image_out.jpg\ub97c \uc0dd\uc131\ud55c\ub2e4.<\/p>\n<p>[\uc124\uba85] &#8220;-quality 100&#8243;\uc774\ub780 \uc635\uc158\uc744 \uc8fc\uba74 \ud488\uc9c8\uc744 \ucd5c\ub300\ud55c \uc88b\uac8c\ud55c\ub2e4.<\/p>\n<p>3. \ud68c\uc804<\/p>\n<p>convert image_org.png -matte -background none -rotate 90  image_out.png<br \/>\n[\uc124\uba85] \uc774\ubbf8\uc9c0\ub97c 90\ub3c4 \ud68c\uc804\ud558\uace0 \ub098\uba38\uc9c0 \uc601\uc5ed\uc740 \ud22c\uba85\ud558\uac8c\ud55c\ub2e4.<\/p>\n<p>convert image_org.png -matte -background none -rotate -15  image_out.png<br \/>\n[\uc124\uba85] \uc774\ubbf8\uc9c0\ub97c -15\ub3c4 \ud68c\uc804\ud558\uace0 \ub098\uba38\uc9c0 \uc601\uc5ed\uc740 \ud22c\uba85\ud558\uac8c\ud55c\ub2e4.<\/p>\n<p>4. \uc88c\uc6b0\ubc18\uc804,\uc0c1\ud558\ubc18\uc804<\/p>\n<p>convert -flop image_org.jpg  image_out.jpg<br \/>\n[\uc124\uba85] image_org.jpg  \uc774\ubbf8\uc9c0\ub97c \uc88c\uc6b0\ubc18\uc804\uc2dc\ucf1c image_out.jpg \uc774\ubbf8\uc9c0\ub97c \uc0dd\uc131\ud55c\ub2e4.<\/p>\n<p>convert -flip image_org.jpg  image_out.jpg<br \/>\n[\uc124\uba85] image_org.jpg  \uc774\ubbf8\uc9c0\ub97c \uc0c1\ud558\ubc18\uc804\uc2dc\ucf1c image_out.jpg \uc774\ubbf8\uc9c0\ub97c \uc0dd\uc131\ud55c\ub2e4.<\/p>\n<p>5. \ud751\ubc31,\uac08\uc0c9 \ud6a8\uacfc<\/p>\n<p>convert image_org.jpg -colorspace gray image_out.jpg<br \/>\n[\uc124\uba85] image_org.jpg  \uc774\ubbf8\uc9c0\ub97c \ud751\ubc31\ud6a8\uacfc\ub97c \uc801\uc6a9\ud558\uace0 image_out.jpg \uc774\ubbf8\uc9c0\ub97c \uc0dd\uc131\ud55c\ub2e4.<\/p>\n<p>convert image_org.jpg -sepia-tone 80% image_out.jpg<br \/>\n[\uc124\uba85] image_org.jpg  \uc774\ubbf8\uc9c0\ub97c \uac08\uc0c9\ud6a8\uacfc\ub97c \uc801\uc6a9\ud558\uace0 image_out.jpg \uc774\ubbf8\uc9c0\ub97c \uc0dd\uc131\ud55c\ub2e4.<\/p>\n<p>6. \ubc1d\uac8c,\uc5b4\ub461\uac8c<\/p>\n<p>convert image_org.jpg -sigmoidal-contrast 3,0% image_out.jpg<br \/>\n[\uc124\uba85] image_org.jpg  \uc774\ubbf8\uc9c0\ub97c \ubc1d\uac8c\ud558\uc5ec image_out.jpg \uc774\ubbf8\uc9c0\ub97c \uc0dd\uc131\ud55c\ub2e4.<\/p>\n<p>convert image_org.jpg -sigmoidal-contrast 3,100% image_out.jpg<br \/>\n[\uc124\uba85] image_org.jpg  \uc774\ubbf8\uc9c0\ub97c \uc5b4\ub461\uac8c\ud558\uc5ec image_out.jpg \uc774\ubbf8\uc9c0\ub97c \uc0dd\uc131\ud55c\ub2e4.<\/p>\n<p>7. \uc790\ub974\uae30(crop)<\/p>\n<p>convert image_org.jpg -crop 800&#215;600+10+20  image_out.jpg<br \/>\n[\uc124\uba85] image_org.jpg\ub97c Left 10\ud53d\uc140 Top 20\ud53d\uc140 \ubd80\ud130 800&#215;600\ud53d\uc140\uae4c\uc9c0  \uc790\ub974\uace0 \uadf8 \uacb0\uacfc\ub85c image_out.jpg \uc774\ubbf8\uc9c0\ub97c \uc0dd\uc131\ud55c\ub2e4.<\/p>\n<p>convert image_org.jpg -crop 800&#215;600+10-30  image_out.jpg<br \/>\n[\uc124\uba85] image_org.jpg\ub97c Left 10\ud53d\uc140 Top -30\ud53d\uc140 \ubd80\ud130 800&#215;600\ud53d\uc140\uae4c\uc9c0  \uc790\ub974\uace0 \uadf8 \uacb0\uacfc\ub85c image_out.jpg \uc774\ubbf8\uc9c0\ub97c \uc0dd\uc131\ud55c\ub2e4.<\/p>\n<p>8. \uce94\ubc84\uc2a4\uc0dd\uc131<\/p>\n<p>convert -size 800&#215;600 xc:white image_out.jpg<br \/>\n[\uc124\uba85] 800&#215;600\ud53d\uc140\uc778 \ud770\uc0c9 image_out.jpg \uc774\ubbf8\uc9c0\ub97c \uc0dd\uc131\ud55c\ub2e4.<\/p>\n<p>convert -size 800&#215;600 xc:skyblue image_out.gif<br \/>\n[\uc124\uba85] 800&#215;600\ud53d\uc140\uc778 \ud558\ub298\uc0c9 image_out.jpg \uc774\ubbf8\uc9c0\ub97c \uc0dd\uc131\ud55c\ub2e4.<\/p>\n<p>convert -size 800&#215;600 xc:none image_out.png<br \/>\n[\uc124\uba85] 800&#215;600\ud53d\uc140\uc778 \ud22c\uba85 image_out.png \uc774\ubbf8\uc9c0\ub97c \uc0dd\uc131\ud55c\ub2e4.<\/p>\n<p>9. \uae00\uc790\uc774\ubbf8\uc9c0\uc0dd\uc131<\/p>\n<p>convert -background white -fill black -font batang.ttf -pointsize 36 label:&#8221;Testn\ud55c\uae00&#8221; image_out.png<br \/>\n[\uc124\uba85] &#8220;Testn\ud55c\uae00&#8221;\uc774\ub780 \uae00\uc790\ub85c image_out.png \uc774\ubbf8\uc9c0\ub97c \uc0dd\uc131\ud55c\ub2e4. (\uc774\ubbf8\uc9c0\ubc30\uacbd\uc740 \ud770\uc0c9, \uae00\uc790\uc0c9\uc740 \uac80\uc815\uc0c9, \ud3f0\ud2b8\ub294 \ubc14\ud0d5, \ud3f0\ud2b8\uc0ac\uc774\uc988\ub294 36pt)<\/p>\n<p>10. \uc774\ubbf8\uc9c0\ud569\uc131<\/p>\n<p>composite -dissolve 60 -geometry +50+100 image_temp.png image_org.jpg image_out.jpg<br \/>\n[\uc124\uba85] image_temp.png \uc774\ubbf8\uc9c0\ub97c \ud22c\uba85\ub3c4 60%\ub85c \ud558\uc5ec image_org.jpg\uc758 50,100 \ud53d\uc140 \uc88c\ud45c\uc5d0 \uc62c\ub824 \ud569\uc131\ud6c4 image_out.jpg \uc774\ubbf8\uc9c0\ub97c \uc0dd\uc131\ud55c\ub2e4.<\/p>\n<p>\ucd9c\ucc98 : http:\/\/gmind.tistory.com\/27<\/p>\n<p>\ucc38\uc870\uc790\ub8cc :<br \/>\nhttp:\/\/blog.naver.com\/seogi1004\/110047542158 (\ubcc4\ub3c4 \ud504\ub85c\uc138\uc2a4 \uc0ac\uc6a9)<br \/>\nhttp:\/\/www.imagemagick.org\/Usage\/thumbnails\/ (\uc774\ubbf8\uc9c0 \ud3b8\uc9d1 \uc18c\ud504\ud2b8\uc6e8\uc5b4\uc778 \uc774\ubbf8\uc9c0\ub9e4\uc9c1 \uacf5\uc2dd\uc0ac\uc774\ud2b8)<br \/>\nhttp:\/\/blog.naver.com\/genesung\/130052565650 (\uc774\ubbf8\uc9c0,\ubb38\uc11c,\ub3d9\uc601\uc0c1 \uc378\ub124\uc77c\uc5d0\ub300\ud574 \uae30\uc220\ud558\uace0\uc788\ub294 \ubb38\uc11c)<br \/>\nhttp:\/\/gimmehide.tistory.com\/38 (\uc774\ubbf8\uc9c0\ub9e4\uc9c1 \uc124\uce58\ubd80\ud130 \ud65c\uc6a9\uae4c\uc9c0 \uae30\uc220 For Java)<\/p>\n<p>http:\/\/dev-world.springnote.com\/pages\/8962932(\uc11c\ubc84 \ud658\uacbd\uc5d0\uc11c \uc774\ubbf8\uc9c0\ub9e4\uc9c1\uc0ac\uc6a9)<\/p>\n","protected":false},"excerpt":{"rendered":"<p>imagemagick \uc740 jai \ubcf4\ub2e4 \ud5a5\uc0f9\ub41c \uae30\ub2a5\uacfc quality\ub97c \uc81c\uacf5 \ud569\ub2c8\ub2e4. [win] \ub2e4\uc6b4\ub85c\ub4dc : http:\/\/www.imagemagick.org\/script\/binary-releases.php#windows [linux] \ub2e4\uc6b4\ub85c\ub4dc \ubc0f \uc124\uce58 http:\/\/www.imagemagick.org\/script\/index.php \ubc14\ub85c \ub2e4\uc6b4\ub85c\ub4dc &#8211; ftp:\/\/ftp.imagemagick.org\/pub\/ImageMagick\/ImageMagick.tar.gz tar zxvf ImageMagick.tar.gz cd ImageMagick-6.5.9-0 .\/configure &#8211;prefix=\/usr\/local\/ImageMagick &#8211;with-quantum-depth=32&hellip; <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[1],"tags":[],"_links":{"self":[{"href":"https:\/\/blog.goorigo.com\/index.php?rest_route=\/wp\/v2\/posts\/432"}],"collection":[{"href":"https:\/\/blog.goorigo.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.goorigo.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.goorigo.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.goorigo.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=432"}],"version-history":[{"count":0,"href":"https:\/\/blog.goorigo.com\/index.php?rest_route=\/wp\/v2\/posts\/432\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.goorigo.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=432"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.goorigo.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=432"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.goorigo.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=432"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}