Доброго времени суток! Есть задачка: "В исходных файлах clue.bmp и mrBody.png скрыты изображения. В исходных изображениях точки с цветом 0xFF0000 (красный) являются шумом, который скрывает реальное изображение. Напишите программу, которая покажет, кто же спрятан в исходных файлах."
Дополнительным условием к задаче стало увеличения очищенного изображения в 2 раза.
Убрать шум труда не составило, но вот с увеличением проблема. Как мне объяснили, нужно: "В новый файл нужно вместо одной точки писать две размазывая ее цвета. Например, в исходном файле у нас есть точка с цветами RGB В результирующем должно быть две точки в которой цвета из исходной точки распределятся вот так RRG GBB". Код прилагаю.
File file = new File("mrBody.png");
BufferedImage sourceImage = ImageIO.read(file);
int width = sourceImage.getWidth();
int height = sourceImage.getHeight();
int red = Color.RED.getRGB();
int white = Color.WHITE.getRGB();
for (int y = 0; y < height; y++) {
for (int x = 0; x < width; x++) {
if (sourceImage.getRGB(x, y) == red) {
sourceImage.setRGB(x, y, white);
}
}
}
BufferedImage result = new BufferedImage(width * 2, height * 2, sourceImage.getType());
for (int y = 0; y < height; y++) {
for (int x = 0; x < width; x++) {
Color color = new Color(sourceImage.getRGB(x, y));
int r = color.getRed();
int g = color.getGreen();
int b = color.getBlue();
Color c1 = new Color(r, r, g);
Color c2 = new Color(g, b, b);
result.setRGB(x*2, y*2, c1.getRGB());
result.setRGB((x*2)+1, y*2, c2.getRGB());
result.setRGB(x*2, (y*2)+1, c1.getRGB());
result.setRGB((x*2)+1, (y*2)+1, c2.getRGB());
}
}
ImageIO.write(result, "png", new File("result.png"));
Если я правильно вас понял, то вам нужно использовать что-то подобное:
try
{
File file = new File("file.png");
BufferedImage img = ImageIO.read(file);// Любое другое изображение
BufferedImage image = new BufferedImage(img.getWidth() * 2, img.getHeight() * 2, BufferedImage.TYPE_INT_RGB);// Новое изображение
image.getGraphics().drawImage(img.getScaledInstance(image.getWidth(), image.getHeight(), Image.SCALE_SMOOTH), 0, 0, null);// На новом рисуем увеличенное старое
ImageIO.write(image, "PNG", file);
}
catch (IOException e)
{
e.printStackTrace();
}
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости