Nano Hash - криптовалюты, майнинг, программирование

Записать растровое изображение в текстовую строку в файле (C#)

Мне нужно преобразовать растровое изображение в строку в текстовом файле. Поэтому я сначала конвертирую Bitmap в массив байтов, а затем пытаюсь преобразовать массив байтов в строку, а затем добавляю строку в строку в текстовом файле.

Это должно быть что-то вроде:

test.txt

3 34 25 245 ... 24 2 1 # 1-е изображение

73 32 2 2 4 ... 12 2 5 # 2-е изображение

Этот код не работает, как его изменить?

public static void SaveImgAsText(Bitmap img, string path)
{ 
    // Specify a pixel format.
    PixelFormat pxf = PixelFormat.Format24bppRgb;

    // Lock the bitmap's bits.
    Rectangle rect = new Rectangle(0, 0, img.Width, img.Height);
    BitmapData bmpData =
    img.LockBits(rect, ImageLockMode.ReadWrite,
                 pxf);

    // Get the address of the first line.
    IntPtr ptr = bmpData.Scan0;

    // Declare an array to hold the bytes of the bitmap. 
    // int numBytes = bmp.Width * bmp.Height * 3; 
    int numBytes = bmpData.Stride * img.Height;
    byte[] rgbValues = new byte[numBytes];

    // Copy the RGB values into the array.
    Marshal.Copy(ptr, rgbValues, 0, numBytes);

    string result = System.Text.Encoding.UTF8.GetString(rgbValues);
} 
13.03.2014

Ответы:


1

System.Text.Encoding.UTF8.GetString принимает байты как необработанный Unicode и создает из него строку. Совершенно не то, что вы хотите. Вместо этого используйте эту функцию:

    public static string ByteArrayToDecimalString(byte[] ba)
    {
        StringBuilder hex = new StringBuilder();
        string format = "{0}";
        foreach (byte b in ba)
        {
            hex.AppendFormat(format, b);
            format = " {0}";
        }
        return hex.ToString();
    }
13.03.2014

2

Вы можете использовать Convert.ToBase64String ( http://msdn.microsoft.com/en-us/library/system.convert.tobase64string(v=vs.110).aspx).

13.03.2014
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..