【华为OD机试】经典屏保【2023 B卷|100分】
发布人:shili8
发布时间:2025-02-13 01:06
阅读次数:0
**华为OD机试题目**
**经典屏保**
**2023 B卷 |100分**
**题目描述**
在这个问题中,我们需要设计一个经典的屏保系统。屏保系统应该能够显示一张图片,并且可以进行一些基本的操作,如旋转、缩放等。
**要求**
1. 使用 Java 或 C++ 等语言编写代码。
2. 实现以下功能:
* 展示一张图片(可以是任意大小和格式)。
* 支持图片的旋转(90°、180°、270°)。
* 支持图片的缩放(可以选择缩放比例)。
3. 使用 Java 或 C++ 等语言编写代码,实现以下功能:
* 支持图片的保存(可以选择保存格式,如 JPEG、PNG 等)。
**解决方案**
###1. 展示一张图片首先,我们需要展示一张图片。我们可以使用 Java 的 `BufferedImage` 类来实现这一点。
javaimport javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; public class ScreenSaver { public static void main(String[] args) throws IOException { // 加载图片 BufferedImage image = ImageIO.read(new File("image.jpg")); // 展示图片 System.out.println(image); } }
###2. 支持图片的旋转接下来,我们需要支持图片的旋转。我们可以使用 Java 的 `AffineTransform` 类来实现这一点。
javaimport java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; public class ScreenSaver { public static void main(String[] args) throws IOException { // 加载图片 BufferedImage image = ImageIO.read(new File("image.jpg")); // 旋转图片 BufferedImage rotatedImage = rotateImage(image,90); // 展示旋转后的图片 System.out.println(rotatedImage); } public static BufferedImage rotateImage(BufferedImage image, int angle) { Graphics2D g2d = image.createGraphics(); g2d.rotate(Math.toRadians(angle), image.getWidth() /2, image.getHeight() /2); return image; } }
###3. 支持图片的缩放接下来,我们需要支持图片的缩放。我们可以使用 Java 的 `AffineTransform` 类来实现这一点。
javaimport java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; public class ScreenSaver { public static void main(String[] args) throws IOException { // 加载图片 BufferedImage image = ImageIO.read(new File("image.jpg")); // 缩放图片 BufferedImage scaledImage = scaleImage(image,0.5); // 展示缩放后的图片 System.out.println(scaledImage); } public static BufferedImage scaleImage(BufferedImage image, double factor) { int width = (int) (image.getWidth() * factor); int height = (int) (image.getHeight() * factor); BufferedImage scaledImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); Graphics2D g2d = scaledImage.createGraphics(); g2d.drawImage(image,0,0, width, height, null); return scaledImage; } }
###4. 支持图片的保存最后,我们需要支持图片的保存。我们可以使用 Java 的 `ImageIO` 类来实现这一点。
javaimport javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.io.File; public class ScreenSaver { public static void main(String[] args) throws IOException { // 加载图片 BufferedImage image = ImageIO.read(new File("image.jpg")); //保存图片 ImageIO.write(image, "jpg", new File("saved_image.jpg")); } }
**总结**
在本题中,我们设计了一个经典的屏保系统。我们实现了以下功能:
* 展示一张图片。
* 支持图片的旋转(90°、180°、270°)。
* 支持图片的缩放(可以选择缩放比例)。
* 支持图片的保存(可以选择保存格式,如 JPEG、PNG 等)。
**注意**
本题目仅供参考,实际项目中可能需要进行更多的功能和优化。