{"id":328,"date":"2024-04-05T23:57:56","date_gmt":"2024-04-05T22:57:56","guid":{"rendered":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/?p=328"},"modified":"2024-04-30T23:58:36","modified_gmt":"2024-04-30T22:58:36","slug":"das-skalieren-von-bufferedimage-in-java-auf-unterschiedliche-aufloesungen","status":"publish","type":"post","link":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/?p=328","title":{"rendered":"Das Skalieren von BufferedImage in Java auf unterschiedliche Aufl\u00f6sungen"},"content":{"rendered":"\n<p id=\"block-3d59ab09-931c-4fe0-b6aa-4aa9a36b9577\">Die Skalierung von Bildern in Java ist eine h\u00e4ufige Anforderung in der Entwicklung von Anwendungen, insbesondere wenn es darum geht, Bilder auf unterschiedlichen Aufl\u00f6sungen oder Bildschirmgr\u00f6\u00dfen anzuzeigen. BufferedImage ist eine Klasse in der Java API, die die Darstellung und Bearbeitung von Bildern erm\u00f6glicht. In diesem Artikel werden verschiedene Methoden und Techniken diskutiert, um BufferedImage in Java auf unterschiedliche Aufl\u00f6sungen zu skalieren.<\/p>\n\n\n\n<p><strong>1. Die Grundlagen von BufferedImage in Java<\/strong><\/p>\n\n\n\n<p>BufferedImage ist eine Klasse in der Java API, die die Darstellung und Bearbeitung von Bildern erm\u00f6glicht. Sie ist Teil des java.awt.image-Pakets und bietet verschiedene Methoden zum Erstellen, Lesen und Schreiben von Bildern. BufferedImage ist vielseitig einsetzbar und unterst\u00fctzt verschiedene Bildformate wie JPEG, PNG und GIF.<\/p>\n\n\n\n<p>Die Gr\u00f6\u00dfe eines BufferedImage wird durch seine Breite und H\u00f6he definiert, die in Pixeln gemessen werden. Beispielsweise hat ein BufferedImage mit den Ma\u00dfen 800&#215;600 eine Breite von 800 Pixeln und eine H\u00f6he von 600 Pixeln. Beim Skalieren eines BufferedImage auf eine andere Aufl\u00f6sung m\u00fcssen diese Breite und H\u00f6he entsprechend angepasst werden, um das Bild proportional zu vergr\u00f6\u00dfern oder zu verkleinern.<\/p>\n\n\n\n<p><strong>2. Verwendung der Graphics2D-Klasse<\/strong><\/p>\n\n\n\n<p>Eine der gebr\u00e4uchlichsten Methoden zum Skalieren von BufferedImage in Java ist die Verwendung der Graphics2D-Klasse. Diese Klasse erweitert die Funktionalit\u00e4t der Graphics-Klasse und bietet zus\u00e4tzliche Methoden zum Zeichnen und Transformieren von Grafiken.<\/p>\n\n\n\n<p>Um ein BufferedImage zu skalieren, k\u00f6nnen Sie die Graphics2D-Klasse verwenden, um ein neues BufferedImage mit der gew\u00fcnschten Aufl\u00f6sung zu erstellen und dann das urspr\u00fcngliche Bild darauf zu zeichnen. Hier ist ein Beispielcode, der dies veranschaulicht:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\"><span class=\"hljs-keyword\">import<\/span> java.awt.*;\n<span class=\"hljs-keyword\">import<\/span> java.awt.image.*;\n\npublic <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">ImageScaler<\/span> <\/span>{\n\n    public <span class=\"hljs-keyword\">static<\/span> BufferedImage scaleImage(BufferedImage originalImage, int targetWidth, int targetHeight) {\n        BufferedImage scaledImage = <span class=\"hljs-keyword\">new<\/span> BufferedImage(targetWidth, targetHeight, BufferedImage.TYPE_INT_ARGB);\n        Graphics2D graphics2D = scaledImage.createGraphics();\n        graphics2D.drawImage(originalImage, <span class=\"hljs-number\">0<\/span>, <span class=\"hljs-number\">0<\/span>, targetWidth, targetHeight, <span class=\"hljs-literal\">null<\/span>);\n        graphics2D.dispose();\n        <span class=\"hljs-keyword\">return<\/span> scaledImage;\n    }\n\n    public <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-keyword\">void<\/span> main(<span class=\"hljs-built_in\">String<\/span>&#91;] args) {\n        <span class=\"hljs-keyword\">try<\/span> {\n            BufferedImage originalImage = ImageIO.read(<span class=\"hljs-keyword\">new<\/span> File(<span class=\"hljs-string\">\"original.jpg\"<\/span>));\n            BufferedImage scaledImage = scaleImage(originalImage, <span class=\"hljs-number\">400<\/span>, <span class=\"hljs-number\">300<\/span>);\n            ImageIO.write(scaledImage, <span class=\"hljs-string\">\"PNG\"<\/span>, <span class=\"hljs-keyword\">new<\/span> File(<span class=\"hljs-string\">\"scaled.png\"<\/span>));\n        } <span class=\"hljs-keyword\">catch<\/span> (IOException e) {\n            e.printStackTrace();\n        }\n    }\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>In diesem Beispiel wird die Methode scaleImage verwendet, um ein BufferedImage auf die gew\u00fcnschte Aufl\u00f6sung zu skalieren. Das urspr\u00fcngliche Bild wird dabei auf das neu erstellte BufferedImage gezeichnet, wodurch es skaliert wird. Das resultierende skalierte Bild kann dann gespeichert oder anderweitig verwendet werden.<\/p>\n\n\n\n<p><strong>3. Interpolationsmethoden<\/strong><\/p>\n\n\n\n<p>Beim Skalieren von Bildern ist die Wahl der Interpolationsmethode wichtig, da sie bestimmt, wie die Farbwerte der Pixel im skalierten Bild berechnet werden. Java bietet verschiedene Interpolationsmethoden, die durch die RenderingHints-Klasse gesteuert werden k\u00f6nnen.<\/p>\n\n\n\n<p>Die gebr\u00e4uchlichsten Interpolationsmethoden sind NEAREST_NEIGHBOR, BILINEAR und BICUBIC. NEAREST_NEIGHBOR ist die schnellste Methode, f\u00fchrt jedoch zu verpixelten Ergebnissen. BILINEAR bietet eine gute Balance zwischen Geschwindigkeit und Qualit\u00e4t und wird oft f\u00fcr allgemeine Anwendungsf\u00e4lle verwendet. BICUBIC liefert die beste Qualit\u00e4t, ist aber auch am langsamsten.<\/p>\n\n\n\n<p>Um die Interpolationsmethode beim Skalieren von BufferedImage anzugeben, k\u00f6nnen Sie die setRenderingHint-Methode der Graphics2D-Klasse verwenden. Hier ist ein Beispiel, das die Interpolationsmethode auf BILINEAR setzt:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">Graphics2D graphics2D = scaledImage.createGraphics();\ngraphics2D.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);\ngraphics2D.drawImage(originalImage, <span class=\"hljs-number\">0<\/span>, <span class=\"hljs-number\">0<\/span>, targetWidth, targetHeight, <span class=\"hljs-literal\">null<\/span>);\ngraphics2D.dispose();<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Durch Festlegen des RenderingHints.KEY_INTERPOLATION auf RenderingHints.VALUE_INTERPOLATION_BILINEAR wird die BILINEAR-Interpolationsmethode verwendet, um das Bild zu skalieren.<\/p>\n\n\n\n<p><strong>Fazit<\/strong><\/p>\n\n\n\n<p>Das Skalieren von BufferedImage in Java auf unterschiedliche Aufl\u00f6sungen ist eine h\u00e4ufige Anforderung in der Entwicklung von Anwendungen. Durch die Verwendung der Graphics2D-Klasse und die Wahl der richtigen Interpolationsmethode k\u00f6nnen Bilder effizient und qualitativ hochwertig skaliert werden. Mit den hier vorgestellten Techniken k\u00f6nnen Entwickler Bilder an verschiedene Anzeigeumgebungen anpassen und eine optimale Benutzererfahrung bieten.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Die Skalierung von Bildern in Java ist eine h\u00e4ufige Anforderung in der Entwicklung von Anwendungen, insbesondere wenn es darum geht, Bilder auf unterschiedlichen Aufl\u00f6sungen oder Bildschirmgr\u00f6\u00dfen anzuzeigen. BufferedImage ist eine Klasse in der Java API, die die Darstellung und Bearbeitung von Bildern erm\u00f6glicht. In diesem Artikel werden verschiedene Methoden und Techniken diskutiert, um BufferedImage in [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-328","post","type-post","status-publish","format-standard","hentry","category-plain_java"],"_links":{"self":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts\/328","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=328"}],"version-history":[{"count":1,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts\/328\/revisions"}],"predecessor-version":[{"id":329,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts\/328\/revisions\/329"}],"wp:attachment":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=328"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=328"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=328"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}