Доброго времени суток! Есть задачка: "В исходных файлах 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();
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Не происходит сохранения студента, при выбранном универе, причем когда можно оставить поле univer пустым, все отлично сохраняет
При работе этого кода возникает IndexOutOfBoundsException, хотя индекс никак не может выходить за пределы arrayList:
Столкнулся с тем, что часто в системах объявляют интерфейсы для каждого класса из слоёв service or repositoryСоответственно каждый интерфейс имеет...