Странный вывод в txt файл. (вывод RGB данных пикселей картинок в txt файл)

89
08 марта 2022, 23:30

Попробовал найти и вывести RGB данные одной картинки (ну конечно программа должна работать для любых картинок) в один соответствующий txt файл.

Начнем с кода программы.

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import javax.imageio.ImageIO;
public class ReadAndWriteImage
{
    public static void main(String[] args) throws IOException {
        File file = new File("I:\\1\\Esdeath - war music collection1.jpg");
        File file2 = new File("I:\\1\\Esdeath - war music collection1.txt");
        // Getting pixel color by position x and y
        BufferedImage image = ImageIO.read(file);
        PrintWriter printWriter = new PrintWriter(file2);
        for (int y = 0; y < image.getHeight(); y++) {
            for (int x = 0; x < image.getWidth(); x++) {
                int clr = image.getRGB(x, y);
                int red = (clr & 0x00ff0000) >> 16; //ну это не моя импровизация, а скопированное решение из одного ответа со стаковерфлоу
                int green = (clr & 0x0000ff00) >> 8; //то же самое и про green и blue
                int blue = clr & 0x000000ff;             
                printWriter.print(red + ", " + green + ", " + blue + "; ");
            }
        }
        printWriter.close();
    }
} 

И так, с кодом теперь ознакомлены.

Теперь насчет проблемы.

Что посоветуете сделать? Как можно исправить эту даже не знаю как называть, ладно назовем это неисправностью.

Теперь дополнительная информация: Я решил попробовать вывести эти данные не одним файлом а множеством мелких txt файлов, количество которых зависит от высоты картинки (скажем 1280х720) - выводит 720 штук txt файлов. Но к сожалению, самый последний файл имеет ту же неисправность (что и описана на втором пункте на скрине txt файла)

Есть еще кое что, что вызывает волнение.

А это в случае если картинка недостаточно хорошо видна:

Но это еще не весь цирк.

я это сделал скрин txt, которую создала и заполнила сама программа, а вот ниже я сделал скрин того, что вывело IDE при попытке читать 800-ый (в смысле последний кусок данных) txt файл.

Удивительным образом, выводит правильную последовательность, по крайней мере на вид правильный, так как правило "цифра,цифра,цифра;" соблюдена.

Но почему тогда если напрямую открыть txt файл через блокнот - выводится неправильный вид?

вот дополнительный скрин

Как то запутался я.

READ ALSO
Распарсить массив json в составе json

Распарсить массив json в составе json

Имею массив json в составе большого jsonИспользую jackson

91
getReader() и getInputStream() в веб приложении

getReader() и getInputStream() в веб приложении

Столкнулась с проблемой что нельзя одновременно у одного request вызвать и getReader(), и getInputStream(), в документации написано что нельзя и на практике...

201
Как считать xml-файл в String, оставляя пробелы,но удаляя переносы строк?

Как считать xml-файл в String, оставляя пробелы,но удаляя переносы строк?

Как считать xml-файл полностью в String, оставляя пробелы,но удаляя переносы строк?

101
No bean named &#39;entityManagerFactory&#39; available при тестировании в Spring Boot

No bean named 'entityManagerFactory' available при тестировании в Spring Boot

подскажите пожалуйста как решить данную проблему, в интернете решения не помоглиВывод консоли при тестировании:

91