Graphics2D를 사용하여 버퍼링된 이미지에 텍스트 오버레이
Graphics2D를 사용하여 버퍼링된 이미지에 텍스트를 오버레이하려고 할 때 올바른 사용법을 이해하는 것이 중요합니다. drawString()' 메소드의 이 방법에 제공된 x 및 y 좌표는 텍스트의 왼쪽 위 모서리가 아닌 텍스트의 가장 왼쪽 문자에 대한 기준선을 나타냅니다.
문제:
텍스트에 내림차순 문자(예: 'p' 또는 'g')가 포함되어 있지 않고 (0,0) 위치에 렌더링되면 이미지 외부에 렌더링된 것처럼 보입니다. 이는 주어진 공간에 문자가 표시될 공간이 없기 때문입니다.
해결책:
텍스트가 이미지 내에서 렌더링되도록 하려면 대신 이미지를 렌더링하고 직접 수정하는 것이 좋습니다.
코드 예:
"Hello, world!"라는 텍스트가 포함된 이미지를 렌더링하는 다음 코드 예제를 살펴보세요. 오버레이:
import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.io.IOException; import java.net.URL; import javax.imageio.ImageIO; public class TextOverlay { public static void main(String[] args) throws IOException { // Read the image from a URL BufferedImage image = ImageIO.read(new URL("image-url")); // Create a new image to draw on BufferedImage newImage = new BufferedImage( image.getWidth(), image.getHeight(), BufferedImage.TYPE_INT_ARGB); // Get the graphics context for the new image Graphics2D g = newImage.createGraphics(); // Draw the original image onto the new image g.drawImage(image, 0, 0, null); // Set the font and color for the text g.setFont(new Font("Serif", Font.BOLD, 20)); g.setColor(Color.red); // Calculate the position of the text int x = image.getWidth() - g.getFontMetrics().stringWidth("Hello, world!") - 5; int y = g.getFontMetrics().getHeight(); // Draw the text onto the new image g.drawString("Hello, world!", x, y); // Dispose of the graphics context g.dispose(); // Save or display the new image } }
이미지가 렌더링된 후 수정하면 이미지 자체 내에서 텍스트가 올바르게 오버레이되는지 확인할 수 있습니다.
위 내용은 Graphics2D를 사용하여 버퍼링된 이미지에 텍스트를 올바르게 오버레이하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!