{"id":1430,"date":"2017-10-17T09:49:53","date_gmt":"2017-10-17T01:49:53","guid":{"rendered":"https:\/\/www.strongd.net\/?p=1430"},"modified":"2017-10-17T09:49:53","modified_gmt":"2017-10-17T01:49:53","slug":"%e5%88%9b%e5%bb%ba%e5%9b%be%e7%89%87%e7%9a%84%e7%bc%a9%e7%95%a5%e5%9b%be-createthumbnail","status":"publish","type":"post","link":"https:\/\/www.strongd.net\/?p=1430","title":{"rendered":"\u521b\u5efa\u56fe\u7247\u7684\u7f29\u7565\u56fe  createThumbnail"},"content":{"rendered":"<ol class=\"dp-j\" start=\"1\">\n<li><span class=\"keyword\">private<\/span>\u00a0<span class=\"keyword\">void<\/span>\u00a0createThumbnail(String\u00a0filename,\u00a0<span class=\"keyword\">int<\/span>\u00a0thumbWidth,\u00a0<span class=\"keyword\">int<\/span>\u00a0thumbHeight,\u00a0<span class=\"keyword\">int<\/span>\u00a0quality,\u00a0String\u00a0outFilename)<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span class=\"keyword\">throws<\/span>\u00a0InterruptedException,\u00a0FileNotFoundException,\u00a0IOException<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0{<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span class=\"comment\">\/\/\u00a0load\u00a0image\u00a0from\u00a0filename\u00a0\u00a0<\/span><\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Image\u00a0image\u00a0=\u00a0Toolkit.getDefaultToolkit().getImage(filename);<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0MediaTracker\u00a0mediaTracker\u00a0=\u00a0<span class=\"keyword\">new<\/span>\u00a0MediaTracker(<span class=\"keyword\">new<\/span>\u00a0Container());<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0mediaTracker.addImage(image,\u00a0<span class=\"number\">0<\/span>);<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0mediaTracker.waitForID(<span class=\"number\">0<\/span>);<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span class=\"comment\">\/\/\u00a0use\u00a0this\u00a0to\u00a0test\u00a0for\u00a0errors\u00a0at\u00a0this\u00a0point:\u00a0System.out.println(mediaTracker.isErrorAny());\u00a0\u00a0<\/span><\/li>\n<li><\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span class=\"comment\">\/\/\u00a0determine\u00a0thumbnail\u00a0size\u00a0from\u00a0WIDTH\u00a0and\u00a0HEIGHT\u00a0\u00a0<\/span><\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span class=\"keyword\">double<\/span>\u00a0thumbRatio\u00a0=\u00a0(<span class=\"keyword\">double<\/span>)thumbWidth\u00a0\/\u00a0(<span class=\"keyword\">double<\/span>)thumbHeight;<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span class=\"keyword\">int<\/span>\u00a0imageWidth\u00a0=\u00a0image.getWidth(<span class=\"keyword\">null<\/span>);<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span class=\"keyword\">int<\/span>\u00a0imageHeight\u00a0=\u00a0image.getHeight(<span class=\"keyword\">null<\/span>);<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span class=\"keyword\">double<\/span>\u00a0imageRatio\u00a0=\u00a0(<span class=\"keyword\">double<\/span>)imageWidth\u00a0\/\u00a0(<span class=\"keyword\">double<\/span>)imageHeight;<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span class=\"keyword\">if<\/span>\u00a0(thumbRatio\u00a0&lt;\u00a0imageRatio)\u00a0{<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0thumbHeight\u00a0=\u00a0(<span class=\"keyword\">int<\/span>)(thumbWidth\u00a0\/\u00a0imageRatio);<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\u00a0<span class=\"keyword\">else<\/span>\u00a0{<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0thumbWidth\u00a0=\u00a0(<span class=\"keyword\">int<\/span>)(thumbHeight\u00a0*\u00a0imageRatio);<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}<\/li>\n<li><\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span class=\"comment\">\/\/\u00a0draw\u00a0original\u00a0image\u00a0to\u00a0thumbnail\u00a0image\u00a0object\u00a0and\u00a0\u00a0<\/span><\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span class=\"comment\">\/\/\u00a0scale\u00a0it\u00a0to\u00a0the\u00a0new\u00a0size\u00a0on-the-fly\u00a0\u00a0<\/span><\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0BufferedImage\u00a0thumbImage\u00a0=\u00a0<span class=\"keyword\">new<\/span>\u00a0BufferedImage(thumbWidth,\u00a0thumbHeight,\u00a0BufferedImage.TYPE_INT_RGB);<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Graphics2D\u00a0graphics2D\u00a0=\u00a0thumbImage.createGraphics();<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0graphics2D.setRenderingHint(RenderingHints.KEY_INTERPOLATION,\u00a0RenderingHints.VALUE_INTERPOLATION_BILINEAR);<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0graphics2D.drawImage(image,\u00a0<span class=\"number\">0<\/span>,\u00a0<span class=\"number\">0<\/span>,\u00a0thumbWidth,\u00a0thumbHeight,\u00a0<span class=\"keyword\">null<\/span>);<\/li>\n<li><\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span class=\"comment\">\/\/\u00a0save\u00a0thumbnail\u00a0image\u00a0to\u00a0outFilename\u00a0\u00a0<\/span><\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0BufferedOutputStream\u00a0out\u00a0=\u00a0<span class=\"keyword\">new<\/span>\u00a0BufferedOutputStream(<span class=\"keyword\">new<\/span>\u00a0FileOutputStream(outFilename));<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0JPEGImageEncoder\u00a0encoder\u00a0=\u00a0JPEGCodec.createJPEGEncoder(out);<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0JPEGEncodeParam\u00a0param\u00a0=\u00a0encoder.getDefaultJPEGEncodeParam(thumbImage);<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0quality\u00a0=\u00a0Math.max(<span class=\"number\">0<\/span>,\u00a0Math.min(quality,\u00a0<span class=\"number\">100<\/span>));<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0param.setQuality((<span class=\"keyword\">float<\/span>)quality\u00a0\/\u00a0<span class=\"number\">100<\/span>.0f,\u00a0<span class=\"keyword\">false<\/span>);<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0encoder.setJPEGEncodeParam(param);<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0encoder.encode(thumbImage);<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0out.close();<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0}<\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>private\u00a0void\u00a0createThumbnail(String\u00a0filename,\u00a0int\u00a0thumbWidth,\u00a0int\u00a0thumbHeight,\u00a0int\u00a0quality,\u00a0String\u00a0outFilename) \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0throws\u00a0InterruptedException,\u00a0FileNotFoundException,\u00a0IOException \u00a0\u00a0\u00a0\u00a0{ \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/\u00a0load\u00a0image\u00a0from\u00a0filename\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Image\u00a0image\u00a0=\u00a0Toolkit.getDefaultToolkit().getImage(filename); \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0MediaTracker\u00a0mediaTracker\u00a0=\u00a0new\u00a0MediaTracker(new\u00a0Container()); \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0mediaTracker.addImage(image,\u00a00); \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0mediaTracker.waitForID(0); \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/\u00a0use\u00a0this\u00a0to\u00a0test\u00a0for\u00a0errors\u00a0at\u00a0this\u00a0point:\u00a0System.out.println(mediaTracker.isErrorAny());\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/\u00a0determine\u00a0thumbnail\u00a0size\u00a0from\u00a0WIDTH\u00a0and\u00a0HEIGHT\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0double\u00a0thumbRatio\u00a0=\u00a0(double)thumbWidth\u00a0\/\u00a0(double)thumbHeight; \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0int\u00a0imageWidth\u00a0=\u00a0image.getWidth(null); \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0int\u00a0imageHeight\u00a0=\u00a0image.getHeight(null); \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0double\u00a0imageRatio\u00a0=\u00a0(double)imageWidth\u00a0\/\u00a0(double)imageHeight; \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if\u00a0(thumbRatio\u00a0&lt;\u00a0imageRatio)\u00a0{ \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0thumbHeight\u00a0=\u00a0(int)(thumbWidth\u00a0\/\u00a0imageRatio); \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\u00a0else\u00a0{ \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0thumbWidth\u00a0=\u00a0(int)(thumbHeight\u00a0*\u00a0imageRatio); \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0} \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/\u00a0draw\u00a0original\u00a0image\u00a0to\u00a0thumbnail\u00a0image\u00a0object\u00a0and\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/\u00a0scale\u00a0it\u00a0to\u00a0the\u00a0new\u00a0size\u00a0on-the-fly\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0BufferedImage\u00a0thumbImage\u00a0=\u00a0new\u00a0BufferedImage(thumbWidth,\u00a0thumbHeight,\u00a0BufferedImage.TYPE_INT_RGB); \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Graphics2D\u00a0graphics2D\u00a0=\u00a0thumbImage.createGraphics(); \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0graphics2D.setRenderingHint(RenderingHints.KEY_INTERPOLATION,\u00a0RenderingHints.VALUE_INTERPOLATION_BILINEAR); \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0graphics2D.drawImage(image,\u00a00,\u00a00,\u00a0thumbWidth,\u00a0thumbHeight,\u00a0null); \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/\u00a0save\u00a0thumbnail\u00a0image\u00a0to\u00a0outFilename\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0BufferedOutputStream\u00a0out\u00a0=\u00a0new\u00a0BufferedOutputStream(new\u00a0FileOutputStream(outFilename)); \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0JPEGImageEncoder\u00a0encoder\u00a0=\u00a0JPEGCodec.createJPEGEncoder(out); \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0JPEGEncodeParam\u00a0param\u00a0=\u00a0encoder.getDefaultJPEGEncodeParam(thumbImage); \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0quality\u00a0=\u00a0Math.max(0,\u00a0Math.min(quality,\u00a0100)); \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0param.setQuality((float)quality\u00a0\/\u00a0100.0f,\u00a0false); \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0encoder.setJPEGEncodeParam(param); \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0encoder.encode(thumbImage); \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0out.close(); \u00a0\u00a0\u00a0\u00a0}<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[9],"class_list":["post-1430","post","type-post","status-publish","format-standard","hentry","category-java","tag-java-2"],"_links":{"self":[{"href":"https:\/\/www.strongd.net\/index.php?rest_route=\/wp\/v2\/posts\/1430","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.strongd.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.strongd.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.strongd.net\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.strongd.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1430"}],"version-history":[{"count":1,"href":"https:\/\/www.strongd.net\/index.php?rest_route=\/wp\/v2\/posts\/1430\/revisions"}],"predecessor-version":[{"id":1431,"href":"https:\/\/www.strongd.net\/index.php?rest_route=\/wp\/v2\/posts\/1430\/revisions\/1431"}],"wp:attachment":[{"href":"https:\/\/www.strongd.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1430"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.strongd.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1430"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.strongd.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1430"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}