#Java2D
One Does Not Simply Build Memes with Java: Unless It’s Quarkus
Harness the speed of Quarkus and the power of Java 2D to generate memes dynamically through a RESTful API. Because image manipulation isn't just for Python.
buff.ly/LtuVy6P
#Java #Quarkus #AWT #Meme #Java2D #ImageGeneration
June 24, 2025 at 6:15 AM
JSVG is a lightweight SVG renderer for Java2D. Its new major version 2.0.0 release was filed just yesterday. Of course you can browse the JSVG API on APIdia conveniently.

2.x train: apidia.net/mvn/com.gith...
1.x train: apidia.net/mvn/com.gith...
April 24, 2025 at 4:10 PM
I built PixelDodge in Java2D, then ported it to my own engine, Slayer Engine. After completing the port, I renamed the game Neon Scatter. The project has changed a lot from where it started, and I'm documenting that journey.

🎮 blog.saberslay.com/articles/reb...
Blog
blog.saberslay.com
September 20, 2026 at 8:43 PM
Amazing write up from @charlotte.fyi. I guess it turns out the hard line between the past and future might be tight coupling with specifically ARGB 8bit textures.

github.com/processing/p...
Floating point / HDR texture support · Issue #1324 · processing/processing4
Processing is tightly coupled to ARGB 8-bit textures via the PImage class hierarchy. When the project started, the only crossplatform drawing lib available in the JDK was AWT/Java2D. Those APIs exp...
github.com
November 14, 2025 at 2:20 PM
やっとJavaFXもmacOSのMetal対応が進むようになったのか。Java2D/Swingはもう対応しちゃってたのよね。 #java #javafx
jdk.java.net/javafxmetal/
JavaFX Metal Early-Access Builds
jdk.java.net
February 2, 2025 at 7:48 AM
Decoration 5.6 has been released with a special feature to see before and after the effects are applied.

Download and use it for free at www.japplis.com/decoration/

#java #software #imageeditor #imageprocessor #windows #macos #linux #freemium #java2d
January 21, 2025 at 9:33 AM
In this Valentine's day, I created many "I Love You" images with my software Japplis Poster Font.
www.japplis.com/poster-font/

#valentinesday #valentine #iloveyou #java2d
February 14, 2025 at 9:07 PM
Batch Image Editor Decoration 5.7 has been released!
What's new: 3 new effects and other small improvements
www.japplis.com/decoration/

#java #java2d #windows #macos #linux #freemium #software
February 7, 2025 at 11:24 AM
使うことになるかもしれないのでJava2D関連のAPIを調べていたのだが、ふとJavaFXの画像操作系APIは今どうなっているんだろとこちらも見てみたが、あんましJavaFX2.2の時から変わっていない?
純粋な画像操作はこっちの仕事じゃないということで手つかずなのかなあ

#java #javafx
June 5, 2025 at 9:18 AM
Create beautiful, data-driven word clouds using Java, Quarkus, Java2D, and a custom layout engine tuned for modern applications.

www.the-main-thread.com/p/java-word-...
November 26, 2025 at 8:15 AM
I finally did it — built my own EdWordle-style word cloud generator in Java 😄
Runs on Quarkus, streams PNGs over REST, and has a slick Qute UI to tweak everything live. Super fun project.

If you like fonts, visuals, and creative engineering, check it out 👇
buff.ly/kGIMftv

#java #quarkus #java2d
November 26, 2025 at 7:15 AM
久々にJavaのネタでblog書いた

/ Java2Dで縁取り文字列を描画する方法 - AOEの日記
https://aoe-tk.hatenablog.com/entry/2025/07/15/002755

#java
Java2Dで縁取り文字列を描画する方法
最近Java2Dでちょっとした画像加工処理を行う機会があったのですが、意外と日本語の情報が見当たらなかったものがあったので備忘録的なメモです。今更こんな古いAPIの話を?とも思いますが、こういう基礎的なAPIはいつになっても使うものですし。 やることは既存の画像に対して文字を重ね合わせて出力するというものです。それも縁取りのある文字列を描画します。 次のような画像に対して... 次のように文字列を重ねます。 見やすくするために文字列は縁取りを付けて描画します。これが今回のポイントです。 Java2Dの java.awt.Graphics2D クラスには `drawString()` メソッドがありますが、このメソッドでは縁取り文字列を描画することができません。 縁取り文字列を描画するには描画しようとする文字列のグリフ情報を保持する java.awt.font.GlyphVector クラスを利用します。 次のように java.awt.Font インスタンスと文字列から `GlyphVector` インスタンスを作ります。 // 加工元の画像ファイルに対するGraphics2Dオブジェクトの取得 var image = ImageIO.read(Objects.requireNonNull(Java2DSample.class.getResourceAsStream("/java2dtest.png"))); var graphics = (Graphics2D) image.getGraphics(); // GlyphVectorの取得 var font = new Font(Map.of( TextAttribute.FAMILY, Font.SANS_SERIF, TextAttribute.SIZE, 80, TextAttribute.WEIGHT, TextAttribute.WEIGHT_BOLD)); var glyphVector = font.createGlyphVector(graphics.getFontRenderContext(), "Outlined Text"); `Glyphvector` の `getOutline()` メソッドをコールすることで当該グリフを描画するための java.awt.Shape オブジェクトを取得します。引数には描画座標を指定します (`graphics2D#drawString()` と同じく座標はベースラインの左端の文字位置) 。 var outlineShape = glyphVector.getOutline(120.0f, 980.0f); あとはこの `Shape` を使って輪郭と塗りつぶしをそれぞれ描画することになります。滑らかに描画するためにアンチエイリアスをオンにすることをお勧めします。 // 滑らかに描画するためにアンチエイリアスをオンにし、品質重視のレンダリングヒントを与えるのがお勧め graphics.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); graphics.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY); // 輪郭の描画 graphics.setStroke(new BasicStroke(10.0f)); graphics.setColor(Color.BLACK); graphics.draw(outlineShape); // 塗りつぶし graphics.setColor(Color.WHITE); graphics.fill(outlineShape); これで先に示したように縁取り文字列を描画することができます。 JavaFXだとCSSで指定できるのでこの辺りは楽ですね。でもJavaFXは今回のようにアプリを作らず純粋に画像を操作するだけの目的には使えないんですよね。 今回のサンプルコードの全体は以下のgistにアップしてあります。 Java2Dで縁取り文字列を描画する例 · GitHub
aoe-tk.hatenablog.com
July 14, 2025 at 3:33 PM
#後で読む 用メモです→
KotlinのSwingJava2DでデスクトップゲームColorを開発してみよう
「Kotlin」の「Swing」「Java2D」でデスクトップゲーム「Color」を開発してみよう | ゲーム実装で身に付くプログラミング | Think IT(シンクイット)
【Think IT】第11回の今回は、プログラミング言語「Kotlin」の「Swing」「Java2D」を使ってデスクトップゲーム「Color」を作る解説をします。
thinkit.co.jp
September 16, 2026 at 4:04 PM
Makelangelo software 7.78.3 is out now! No more hardware accelerated graphics is actually better graphics; Peano curve; More GCode and jerk settings; and more! github.com/MarginallyCl...
Release 7.78.3 · MarginallyClever/Makelangelo-software
Full Changelog: 7.76.1...7.78.3 Completely removed all Jogamp Opengl graphics acceleration and replaced it with Java2D. Higher quality graphics with less work in a smaller download. Added Peano a...
github.com
January 31, 2026 at 2:26 AM
I was looking at your work with a friend and another genartist and they suggested it might be a technique you use. I haven't used it, but they sent me this: generateme.wordpress.com/2018/10/24/s...
(WIP) Smooth rendering – log density mapping
Plenty of my concepts require point based rendering, i.e. setting millions of points on the canvas. This method sometimes works and sometimes doesn’t when using Java2D (default Processing ren…
generateme.wordpress.com
December 26, 2024 at 4:21 PM
We also have a few smaller new features, including improved bitmap support (also by Yaroslav) and better support for using the REPL on Java2D. Everything new (and old) is covered in our documentation (which has a nice new theme!)
September 18, 2025 at 3:13 PM
PS - the dynamic render was not Java2D + #scala2
it was plain old (hand-rolled) #c++ using #POCO and #openframeworks

https://pocoproject.org/

https://https://openframeworks.cc/

(the main reason I was using Java was the Oracle java sdk had a fully licensed adobe #pdf / #postscript / #opentype […]
Original post on social.lol
social.lol
January 21, 2025 at 10:43 AM
I created a video on how to create a specific title using Poster Font:
www.youtube.com/watch?v=qEbf...

#software #posterfont #java2d #presentation #powerpoint
How To Create This Title? #software
YouTube video by Japplis
www.youtube.com
February 21, 2025 at 10:21 AM
Clojure Land

🔥 Check out this must-read post from Hacker News 📖 📂 Category: 📌 Key idea: Last updatedNameStars Pavlov38 Behavioral Programming for Clojure clj Behavorial programming ECA (Editor Code Assistant) 446 Editor Code Assistant (ECA) - AI pair programming capabilities agnostic of editor clj…
Clojure Land
🔥 Check out this must-read post from Hacker News 📖 📂 Category: 📌 Key idea: Last updatedNameStars Pavlov38 Behavioral Programming for Clojure clj Behavorial programming ECA (Editor Code Assistant) 446 Editor Code Assistant (ECA) - AI pair programming capabilities agnostic of editor clj AICode Editors ECA Emacs209 Editor Code Assistant (ECA) integration for Emacs clj AICode EditorsEmacs clojure2d570 Java2D wrapper + creative coding supporting functions (based on Processing and openFrameworks)
viralpique.com
October 26, 2025 at 11:39 AM
久々にJavaのネタでblog書いた
https://aoe-tk.hatenablog.com/entry/2025/07/15/002755
#java
Java2Dで縁取り文字列を描画する方法
最近Java2Dでちょっとした画像加工処理を行う機会があったのですが、意外と日本語の情報が見当たらなかったものがあったので備忘録的なメモです。今更こんな古いAPIの話を?とも思いますが、こういう基礎的なAPIはいつになっても使うものですし。 やることは既存の画像に対して文字を重ね合わせて出力するというものです。それも縁取りのある文字列を描画します。 次のような画像に対して... 次のように文字列を重ねます。 見やすくするために文字列は縁取りを付けて描画します。これが今回のポイントです。 Java2Dの java.awt.Graphics2D クラスには `drawString()` メソッドがありますが、このメソッドでは縁取り文字列を描画することができません。 縁取り文字列を描画するには描画しようとする文字列のグリフ情報を保持する java.awt.font.GlyphVector クラスを利用します。 次のように java.awt.Font インスタンスと文字列から `GlyphVector` インスタンスを作ります。 // 加工元の画像ファイルに対するGraphics2Dオブジェクトの取得 var image = ImageIO.read(Objects.requireNonNull(Java2DSample.class.getResourceAsStream("/java2dtest.png"))); var graphics = (Graphics2D) image.getGraphics(); // GlyphVectorの取得 var font = new Font(Map.of( TextAttribute.FAMILY, Font.SANS_SERIF, TextAttribute.SIZE, 80, TextAttribute.WEIGHT, TextAttribute.WEIGHT_BOLD)); var glyphVector = font.createGlyphVector(graphics.getFontRenderContext(), "Outlined Text"); `Glyphvector` の `getOutline()` メソッドをコールすることで当該グリフを描画するための java.awt.Shape オブジェクトを取得します。引数には描画座標を指定します (`graphics2D#drawString()` と同じく座標はベースラインの左端の文字位置) 。 var outlineShape = glyphVector.getOutline(120.0f, 980.0f); あとはこの `Shape` を使って輪郭と塗りつぶしをそれぞれ描画することになります。滑らかに描画するためにアンチエイリアスをオンにすることをお勧めします。 // 滑らかに描画するためにアンチエイリアスをオンにし、品質重視のレンダリングヒントを与えるのがお勧め graphics.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); graphics.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY); // 輪郭の描画 graphics.setStroke(new BasicStroke(10.0f)); graphics.setColor(Color.BLACK); graphics.draw(outlineShape); // 塗りつぶし graphics.setColor(Color.WHITE); graphics.fill(outlineShape); これで先に示したように縁取り文字列を描画することができます。 JavaFXだとCSSで指定できるのでこの辺りは楽ですね。でもJavaFXは今回のようにアプリを作らず純粋に画像を操作するだけの目的には使えないんですよね。 今回のサンプルコードの全体は以下のgistにアップしてあります。 Java2Dで縁取り文字列を描画する例 · GitHub
aoe-tk.hatenablog.com
July 14, 2025 at 3:49 PM
A new AI review! jfree/jfreechart ⭐3.8/5.0
JFreeChart is a long-standing, feature-rich charting library for the Java ecosystem, supporting a broad range of chart types and outputs (notably Java2D rendering with export to SVG/PNG/PDF) and integration on both c...
https://gitrated.com/jfree/jfreechart
March 31, 2026 at 8:26 AM