--- title: Appleの"ブック"アプリのように本の表紙をハードカバー風にする加工をJavaで行う tags: ["Java", "Image Processing"] categories: ["Programming", "Java", "java", "awt", "image", "BufferedImage"] date: 2023-10-17T14:42:42Z updated: 2023-10-18T01:39:59Z --- Appleの"ブック"アプリを開くと、次の図のように、本の表紙に凹上のデボス加工が施され、ハードカバーのような質感に見えます。 image 購入した電子書籍を管理する本棚アプリを作りたいと思っていて、本棚に本の表紙を載せるならこのような加工をしたいと思い、加工方法をChatGPTに聞きました。 次のようなコードを教えてもらいました。 ```java import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; public class DebossImage { public static void main(String[] args) { try { File inputImageFile = new File(args[0]); BufferedImage original = ImageIO.read(inputImageFile); BufferedImage debossedImage = addBookEdgeDeboss(original); File outputImageFile = new File(args[1]); ImageIO.write(debossedImage, "png", outputImageFile); // PNG format to preserve alpha } catch (IOException e) { e.printStackTrace(); } } private static BufferedImage addBookEdgeDeboss(BufferedImage image) { int shadowWidth = 10 * image.getWidth() / 300; int offset = shadowWidth / 2; BufferedImage result = new BufferedImage(image.getWidth(), image.getHeight(), BufferedImage.TYPE_INT_ARGB); for (int y = 0; y < image.getHeight(); y++) { for (int x = 0; x < image.getWidth(); x++) { int color = image.getRGB(x, y); if (x > offset && x < shadowWidth) { int alpha = (int) (255 * (double) x / shadowWidth); int rgba = (color & 0x00FFFFFF) | (alpha << 24); result.setRGB(x, y, rgba); } else { result.setRGB(x, y, color); } } } return result; } } ``` 次のコマンドで変換 ``` java DebossImage.java input.jpg output.png ``` 入力画像
![input](https://github.com/making/blog.ik.am/assets/106908/c854682a-71f7-4abc-8ebe-de2f4080b201) 出力画像
![output](https://github.com/making/blog.ik.am/assets/106908/76457287-28ee-49db-8b97-b6a6916cf74e) 入力画像
![input](https://github.com/making/blog.ik.am/assets/106908/9dff6f0b-f8b8-48a6-b444-b09aee6e8988) 出力画像
![output](https://github.com/making/blog.ik.am/assets/106908/93a1661b-5684-4725-bb56-c00936e508b1) 入力画像
![input](https://github.com/making/blog.ik.am/assets/106908/cf358afa-d58b-4155-817a-9d928a7a28ed) 出力画像
![output](https://github.com/making/blog.ik.am/assets/106908/d7b8bfc6-c752-4c24-a9ca-f36378b634e7) 期待通りの結果です👏 (この記事をダークモードでみた方がエンボス加工がハッキリ見えます)