{"id":2672,"date":"2015-11-02T22:22:00","date_gmt":"2015-11-02T22:22:00","guid":{"rendered":"https:\/\/www.htmlgoodies.com\/uncategorized\/create-high-quality-thumbnails-using-the-imgscalr-library\/"},"modified":"2015-11-02T22:22:00","modified_gmt":"2015-11-02T22:22:00","slug":"create-high-quality-thumbnails-using-the-imgscalr-library","status":"publish","type":"post","link":"https:\/\/www.htmlgoodies.com\/java\/create-high-quality-thumbnails-using-the-imgscalr-library\/","title":{"rendered":"Create High Quality Thumbnails using the imgscalr Library"},"content":{"rendered":"

Create High Quality Thumbnails using the imgscalr Library<\/title><\/p>\n<p>Just about any Web or mobile app that works with images needs to display thumbnails. In fact, we saw such an app in the <a href=\"http:\/\/www.htmlgoodies.com\/html5\/other\/display-a-thumbnail-using-the-vaadin-application-fileupload-control.html\" target=\"_blank\" rel=\"noopener\">Display a Thumbnail using the Vaadin Application FileUpload Control<\/a> tutorial. That app employed the Image.getScaledInstance() method using the SCALE_SMOOTH algorithm. The Java 2D team has been encouraging developers to move away from Image.getScaledInstance() to more modern APIs due to its poor performance. Native Java offers many alternatives, but sadly, none of them can generate as high quality thumbnails as the Image.getScaledInstance() + SCALE_AREA_AVERAGING combo. Therefore, if you need to quickly resize or manipulate images using the most optimal methods, then you should strongly consider using a specialized library like imgscalr. As the name implies, it was created for one purpose and one purpose only: to resize images quickly, easily, and well. In today’s article, we’ll learn how to use imgscalr to resize, crop, pad, and even rotate images.<\/p>\n<h2>Download and Installation<\/h2>\n<p><a href=\"http:\/\/www.thebuzzmedia.com\/software\/imgscalr-java-image-scaling-library\/\" target=\"_blank\" rel=\"noopener\">Imgscalr<\/a> may be downloaded from their website under <a href=\"http:\/\/www.thebuzzmedia.com\/software\/imgscalr-java-image-scaling-library\/#download\" target=\"_blank\" rel=\"noopener\">Download<\/a> section. It is available at no cost under the Apache 2 License. All Download bundles include the library JAR, source code and Javadocs.<\/p>\n<p>The only jar that your project needs to reference is the imgscalr-lib-x.x.jar where x.x is the exact version number. At the time of this writing, version 4.2 is most current.<\/p>\n<h2>Resing Images<\/h2>\n<p>Image resizing is achieved via several overloaded versions of the static Scalr.resize() method. The simplest accepts two arguments: the BufferedImage and targetSize int. That will resize a given image while maintaining its original proportion to a width and height no bigger than the targetSize:<\/p>\n<pre class=\"brush:javascript\">File image = new File(\"C:\\Users\\Public\\Pictures\\Sample Pictures\\mypicture.jpg\");\nBufferedImage img = ImageIO.read(image); \/\/ load image\n\/\/resize to 150 pixels max\nBufferedImage thumbnail = Scalr.resize(image, 150);\n<\/pre>\n<p>For more fine-grained control over how our image is scaled, other attributes such as quality and filtering can be set via additional parameters:<\/p>\n<pre class=\"brush:javascript\">BufferedImage thumbnail = Scalr.resize(image,\n Scalr.Method.SPEED,\n Scalr.Mode.FIT_TO_WIDTH,\n 150,\n 100,\n Scalr.OP_ANTIALIAS);\n<\/pre>\n<p>Here is what each of the above parameters specifies:<\/p>\n<ul>\n<li>src – The BufferedImage that will be scaled.<\/li>\n<li>scalingMethod – A Scalr.Method enum that favors speed to quality or a balance of both.<\/li>\n<li>resizeMode – A Scalr.Mode enum indicating how imgscalr should calculate the final target size for the image, either fitting the image to the given width (Scalr.Mode.FIT_TO_WIDTH) or fitting the image to the given height (Scalr.Mode.FIT_TO_HEIGHT). If Scalr.Mode.AUTOMATIC is passed in, imgscalr will calculate proportional dimensions for the scaled image based on its orientation (landscape, square or portrait). Unless you have very specific size requirements, most of the time you just want to use Scalr.Mode.AUTOMATIC to “do the right thing”.<\/li>\n<li>targetWidth – The target width (int) that you wish the image to have.<\/li>\n<li>targetHeight – The target height (int) that you wish the image to have.<\/li>\n<li>ops – Zero or more optional image operations (e.g. sharpen, blur, etc.) of type BufferedImageOp that can be applied to the resized image. These include OP_BRIGHTER, OP_ANTIALIAS and OP_BRIGHTER, OP_ANTIALIAS.<\/li>\n<\/ul>\n<p>By default imgscalr always honors the image’s original proportions above all else. If either of the target dimensions are wrong, imgscalr will re-calculate proper dimensions honoring the primary dimension of the image first, based on the image’s orientation. To force imgscalr to resize an image into new dimensions, use the FIT_EXACT Scalr Mode.<\/p>\n<h2>Reducing Source Code<\/h2>\n<p>Since all of imgscalr’s method’s are static, you can add a static import for the entire library to remove all of the Scalr.” object prefixes in your code. Here is the previous example rewritten with a static import:<\/p>\n<pre class=\"brush:javascript\">import static org.imgscalr.Scalr.*;\n \nBufferedImage thumbnail = resize(image,\n Method.SPEED,\n Mode.FIT_TO_WIDTH,\n 150,\n 100,\n OP_ANTIALIAS);\n<\/pre>\n<h2>Other Useful Methods<\/h2>\n<p>Imgscalr can also be utilized to pad, crop, and rotate images.<\/p>\n<p>For instance, the following code invokes the pad() method to add a black border of 2 pixels around a resized image:<\/p>\n<pre class=\"brush:javascript\">import org.imgscalr.Scalr.*;\nimport java.awt.Color;\npublic static BufferedImage createThumbnail(BufferedImage img) {\n \/\/ Target width of 500x500 is used\n img = resize(img, 500);\n return pad(img, 2, Color.BLACK);\n}\n<\/pre>\n<p>This class is a simplified version of the one found on the <a href=\"http:\/\/javafreelearningblog.blogspot.ca\/2014\/01\/java-image-scaling.html\" target=\"_blank\" rel=\"noopener\">Java Free Learning Blog<\/a>. It resizes an image and then applies cropping and padding to it:<\/p>\n<pre class=\"brush:javascript\">import javax.imageio.ImageIO;\n\nimport org.imgscalr.Scalr;\nimport org.imgscalr.Scalr.Method;\nimport org.imgscalr.Scalr.Mode;\n\npublic class ImageResize {\n public static void main(String[] args) throws IOException {\n BufferedImage image = ImageIO.read(new File(\"shutterstock_24045112.jpg\"));\n BufferedImage small = Scalr.resize(image,\n Method.ULTRA_QUALITY,\n Mode.AUTOMATIC,\n 500, 500,\n Scalr.OP_ANTIALIAS);\n\n BufferedImage cropimage = Scalr.crop(image, 1000, 1000, Scalr.OP_ANTIALIAS);\n BufferedImage padding = Scalr.pad(image, 200, Scalr.OP_DARKER);\n ImageIO.write(padding, \"jpg\", new File(\"shutterstock_24045112_thumb.jpg\"));\n }\n}\n\n<\/pre>\n<p>Finally, this example rotates an image by 90 degrees:<\/p>\n<pre class=\"brush:javascript\">File file= new File(\"animage.png\");\nBufferedImage src = ImageIO.read(file);\nBufferedImage rotated = Scalr.rotate(src, Scalr.Rotation.CW_90, Scalr.OP_ANTIALIAS);\nBufferedImage scaled = Scalr.resize(rotated, Scalr.Method.SPEED, Scalr.Mode.FIT_TO_HEIGHT, 1336, 768, Scalr.OP_ANTIALIAS);\nImageIO.write(scaled,\"png\" , \"\/rotated.png\");\n<\/pre>\n<h2>Don’t Forget the Error Handling<\/h2>\n<p>Be prepared for possible exceptions whenever you invoke imgscalr methods. In particular, java.lang.IllegalArgumentExceptions and java.awt.image.ImagingOpExceptions are common because they bubble up from the underlying Java BufferedImage class.<\/p>\n<pre class=\"brush:javascript\">try {\n BufferedImage thumbnail = Scalr.resize(sourceFile, \n Scalr.Method.ULTRA_QUALITY,\n Scalr.Mode.AUTOMATIC,\n destinationSize.width,\n destinationSize.height);\n if (thumbnail.getWidth() > destinationSize.width) {\n thumbnail = Scalr.crop(thumbnail,\n (thumbnail.getWidth() - destinationSize.width) \/ 2,\n 0,\n destinationSize.width,\n destinationSize.height);\n }\n else if (thumbnail.getHeight() > destinationSize.height) {\n thumbnail = Scalr.crop(thumbnail,\n 0,\n (thumbnail.getHeight() - destinationSize.height) \/ 2,\n destinationSize.width,\n destinationSize.height);\n }\n}\ncatch(IllegalArgumentException | ImagingOpException e) {\n System.out.println(\"imgscalr threw an exception: \" + e.getMessage());\n}\n<\/pre>\n<h2>Conclusion<\/h2>\n<p>I consciously chose to omit before and after images. Instead, I would urge you to try the above code examples on your own files and see the resulting output for yourself. I think that you’ll be pleasantly surprised with the results!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Create High Quality Thumbnails using the imgscalr Library Just about any Web or mobile app that works with images needs to display thumbnails. In fact, we saw such an app in the Display a Thumbnail using the Vaadin Application FileUpload Control tutorial. That app employed the Image.getScaledInstance() method using the SCALE_SMOOTH algorithm. The Java 2D […]<\/p>\n","protected":false},"author":90,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[30624],"tags":[1015],"b2b_audience":[29],"b2b_industry":[52],"b2b_product":[133,107,86,98],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v18.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Create High Quality Thumbnails using the imgscalr Library | HTML Goodies<\/title>\n<meta name=\"description\" content=\"Create High Quality Thumbnails using the imgscalr Library Just about any Web or mobile app that works with images needs to display thumbnails. In fact, we\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.htmlgoodies.com\/java\/create-high-quality-thumbnails-using-the-imgscalr-library\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Create High Quality Thumbnails using the imgscalr Library | HTML Goodies\" \/>\n<meta property=\"og:description\" content=\"Create High Quality Thumbnails using the imgscalr Library Just about any Web or mobile app that works with images needs to display thumbnails. In fact, we\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.htmlgoodies.com\/java\/create-high-quality-thumbnails-using-the-imgscalr-library\/\" \/>\n<meta property=\"og:site_name\" content=\"HTML Goodies\" \/>\n<meta property=\"article:published_time\" content=\"2015-11-02T22:22:00+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@htmlgoodies\" \/>\n<meta name=\"twitter:site\" content=\"@htmlgoodies\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Rob Gravelle\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.htmlgoodies.com\/#organization\",\"name\":\"HTML Goodies\",\"url\":\"https:\/\/www.htmlgoodies.com\/\",\"sameAs\":[\"https:\/\/twitter.com\/htmlgoodies\"],\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.htmlgoodies.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.htmlgoodies.com\/wp-content\/uploads\/2021\/03\/HTMLg_weblogo_MobileLogo.png\",\"contentUrl\":\"https:\/\/www.htmlgoodies.com\/wp-content\/uploads\/2021\/03\/HTMLg_weblogo_MobileLogo.png\",\"width\":584,\"height\":136,\"caption\":\"HTML Goodies\"},\"image\":{\"@id\":\"https:\/\/www.htmlgoodies.com\/#\/schema\/logo\/image\/\"}},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.htmlgoodies.com\/#website\",\"url\":\"https:\/\/www.htmlgoodies.com\/\",\"name\":\"HTML Goodies\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/www.htmlgoodies.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.htmlgoodies.com\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.htmlgoodies.com\/java\/create-high-quality-thumbnails-using-the-imgscalr-library\/#webpage\",\"url\":\"https:\/\/www.htmlgoodies.com\/java\/create-high-quality-thumbnails-using-the-imgscalr-library\/\",\"name\":\"Create High Quality Thumbnails using the imgscalr Library | HTML Goodies\",\"isPartOf\":{\"@id\":\"https:\/\/www.htmlgoodies.com\/#website\"},\"datePublished\":\"2015-11-02T22:22:00+00:00\",\"dateModified\":\"2015-11-02T22:22:00+00:00\",\"description\":\"Create High Quality Thumbnails using the imgscalr Library Just about any Web or mobile app that works with images needs to display thumbnails. In fact, we\",\"breadcrumb\":{\"@id\":\"https:\/\/www.htmlgoodies.com\/java\/create-high-quality-thumbnails-using-the-imgscalr-library\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.htmlgoodies.com\/java\/create-high-quality-thumbnails-using-the-imgscalr-library\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.htmlgoodies.com\/java\/create-high-quality-thumbnails-using-the-imgscalr-library\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.htmlgoodies.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Create High Quality Thumbnails using the imgscalr Library\"}]},{\"@type\":\"Article\",\"@id\":\"https:\/\/www.htmlgoodies.com\/java\/create-high-quality-thumbnails-using-the-imgscalr-library\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.htmlgoodies.com\/java\/create-high-quality-thumbnails-using-the-imgscalr-library\/#webpage\"},\"author\":{\"@id\":\"https:\/\/www.htmlgoodies.com\/#\/schema\/person\/d340101131281902e682ad0190b7ac75\"},\"headline\":\"Create High Quality Thumbnails using the imgscalr Library\",\"datePublished\":\"2015-11-02T22:22:00+00:00\",\"dateModified\":\"2015-11-02T22:22:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.htmlgoodies.com\/java\/create-high-quality-thumbnails-using-the-imgscalr-library\/#webpage\"},\"wordCount\":739,\"publisher\":{\"@id\":\"https:\/\/www.htmlgoodies.com\/#organization\"},\"keywords\":[\"Java\"],\"articleSection\":[\"Java\"],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.htmlgoodies.com\/#\/schema\/person\/d340101131281902e682ad0190b7ac75\",\"name\":\"Rob Gravelle\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.htmlgoodies.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.htmlgoodies.com\/wp-content\/uploads\/2021\/05\/rob-gravelle-150x150.jpg\",\"contentUrl\":\"https:\/\/www.htmlgoodies.com\/wp-content\/uploads\/2021\/05\/rob-gravelle-150x150.jpg\",\"caption\":\"Rob Gravelle\"},\"description\":\"Rob Gravelle resides in Ottawa, Canada, and has been an IT guru for over 20 years. In that time, Rob has built systems for intelligence-related organizations such as Canada Border Services and various commercial businesses. In his spare time, Rob has become an accomplished music artist with several CDs and digital releases to his credit.\",\"url\":\"https:\/\/www.htmlgoodies.com\/author\/rob-gravelle\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Create High Quality Thumbnails using the imgscalr Library | HTML Goodies","description":"Create High Quality Thumbnails using the imgscalr Library Just about any Web or mobile app that works with images needs to display thumbnails. In fact, we","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.htmlgoodies.com\/java\/create-high-quality-thumbnails-using-the-imgscalr-library\/","og_locale":"en_US","og_type":"article","og_title":"Create High Quality Thumbnails using the imgscalr Library | HTML Goodies","og_description":"Create High Quality Thumbnails using the imgscalr Library Just about any Web or mobile app that works with images needs to display thumbnails. In fact, we","og_url":"https:\/\/www.htmlgoodies.com\/java\/create-high-quality-thumbnails-using-the-imgscalr-library\/","og_site_name":"HTML Goodies","article_published_time":"2015-11-02T22:22:00+00:00","twitter_card":"summary_large_image","twitter_creator":"@htmlgoodies","twitter_site":"@htmlgoodies","twitter_misc":{"Written by":"Rob Gravelle","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Organization","@id":"https:\/\/www.htmlgoodies.com\/#organization","name":"HTML Goodies","url":"https:\/\/www.htmlgoodies.com\/","sameAs":["https:\/\/twitter.com\/htmlgoodies"],"logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.htmlgoodies.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.htmlgoodies.com\/wp-content\/uploads\/2021\/03\/HTMLg_weblogo_MobileLogo.png","contentUrl":"https:\/\/www.htmlgoodies.com\/wp-content\/uploads\/2021\/03\/HTMLg_weblogo_MobileLogo.png","width":584,"height":136,"caption":"HTML Goodies"},"image":{"@id":"https:\/\/www.htmlgoodies.com\/#\/schema\/logo\/image\/"}},{"@type":"WebSite","@id":"https:\/\/www.htmlgoodies.com\/#website","url":"https:\/\/www.htmlgoodies.com\/","name":"HTML Goodies","description":"","publisher":{"@id":"https:\/\/www.htmlgoodies.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.htmlgoodies.com\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.htmlgoodies.com\/java\/create-high-quality-thumbnails-using-the-imgscalr-library\/#webpage","url":"https:\/\/www.htmlgoodies.com\/java\/create-high-quality-thumbnails-using-the-imgscalr-library\/","name":"Create High Quality Thumbnails using the imgscalr Library | HTML Goodies","isPartOf":{"@id":"https:\/\/www.htmlgoodies.com\/#website"},"datePublished":"2015-11-02T22:22:00+00:00","dateModified":"2015-11-02T22:22:00+00:00","description":"Create High Quality Thumbnails using the imgscalr Library Just about any Web or mobile app that works with images needs to display thumbnails. In fact, we","breadcrumb":{"@id":"https:\/\/www.htmlgoodies.com\/java\/create-high-quality-thumbnails-using-the-imgscalr-library\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.htmlgoodies.com\/java\/create-high-quality-thumbnails-using-the-imgscalr-library\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.htmlgoodies.com\/java\/create-high-quality-thumbnails-using-the-imgscalr-library\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.htmlgoodies.com\/"},{"@type":"ListItem","position":2,"name":"Create High Quality Thumbnails using the imgscalr Library"}]},{"@type":"Article","@id":"https:\/\/www.htmlgoodies.com\/java\/create-high-quality-thumbnails-using-the-imgscalr-library\/#article","isPartOf":{"@id":"https:\/\/www.htmlgoodies.com\/java\/create-high-quality-thumbnails-using-the-imgscalr-library\/#webpage"},"author":{"@id":"https:\/\/www.htmlgoodies.com\/#\/schema\/person\/d340101131281902e682ad0190b7ac75"},"headline":"Create High Quality Thumbnails using the imgscalr Library","datePublished":"2015-11-02T22:22:00+00:00","dateModified":"2015-11-02T22:22:00+00:00","mainEntityOfPage":{"@id":"https:\/\/www.htmlgoodies.com\/java\/create-high-quality-thumbnails-using-the-imgscalr-library\/#webpage"},"wordCount":739,"publisher":{"@id":"https:\/\/www.htmlgoodies.com\/#organization"},"keywords":["Java"],"articleSection":["Java"],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.htmlgoodies.com\/#\/schema\/person\/d340101131281902e682ad0190b7ac75","name":"Rob Gravelle","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.htmlgoodies.com\/#\/schema\/person\/image\/","url":"https:\/\/www.htmlgoodies.com\/wp-content\/uploads\/2021\/05\/rob-gravelle-150x150.jpg","contentUrl":"https:\/\/www.htmlgoodies.com\/wp-content\/uploads\/2021\/05\/rob-gravelle-150x150.jpg","caption":"Rob Gravelle"},"description":"Rob Gravelle resides in Ottawa, Canada, and has been an IT guru for over 20 years. In that time, Rob has built systems for intelligence-related organizations such as Canada Border Services and various commercial businesses. In his spare time, Rob has become an accomplished music artist with several CDs and digital releases to his credit.","url":"https:\/\/www.htmlgoodies.com\/author\/rob-gravelle\/"}]}},"_links":{"self":[{"href":"https:\/\/www.htmlgoodies.com\/wp-json\/wp\/v2\/posts\/2672"}],"collection":[{"href":"https:\/\/www.htmlgoodies.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.htmlgoodies.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.htmlgoodies.com\/wp-json\/wp\/v2\/users\/90"}],"replies":[{"embeddable":true,"href":"https:\/\/www.htmlgoodies.com\/wp-json\/wp\/v2\/comments?post=2672"}],"version-history":[{"count":0,"href":"https:\/\/www.htmlgoodies.com\/wp-json\/wp\/v2\/posts\/2672\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.htmlgoodies.com\/wp-json\/wp\/v2\/media?parent=2672"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.htmlgoodies.com\/wp-json\/wp\/v2\/categories?post=2672"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.htmlgoodies.com\/wp-json\/wp\/v2\/tags?post=2672"},{"taxonomy":"b2b_audience","embeddable":true,"href":"https:\/\/www.htmlgoodies.com\/wp-json\/wp\/v2\/b2b_audience?post=2672"},{"taxonomy":"b2b_industry","embeddable":true,"href":"https:\/\/www.htmlgoodies.com\/wp-json\/wp\/v2\/b2b_industry?post=2672"},{"taxonomy":"b2b_product","embeddable":true,"href":"https:\/\/www.htmlgoodies.com\/wp-json\/wp\/v2\/b2b_product?post=2672"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}