powered by simpleCommunicator - 2.0.38     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Повернутое изображение
6 сообщений из 6, страница 1 из 1
Повернутое изображение
    #40046280
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте!

Есть изображение размерами 6 на 6. Нужно выгрузить это изображение и получить массив изображения. Полученный массив сохранить в JSON.
...
Рейтинг: 0 / 0
Повернутое изображение
    #40046281
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Написал такой код
class DataColor
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
using System;
using System.Collections.Generic;
using System.Runtime.Serialization;

namespace Test
{
    [DataContract]
    class DataColor
    {
        [DataMember]
        public List<List<DataColors>> Colors { get; set; }
        [DataMember]
        public Int32 Marker { get; set; }

        public DataColor(Int32 width, Int32 height)
        {
            this.Colors = new List<List<DataColors>>();

            for (int i = 0; i < width; i++)
            {
                var dim = new List<DataColors>();

                for (int j = 0; j < height; j++)
                {
                    var data = new DataColors();

                    dim.Add(data);
                }

                this.Colors.Add(dim);
            }
        }

        [DataContract]
        public class DataColors
        {
            [DataMember]
            public Int32 ColorR { get; set; }
            [DataMember]
            public Int32 ColorG { get; set; }
            [DataMember]
            public Int32 ColorB { get; set; }            
        }        
    }
}

class Program
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
using System;
using System.Collections.Generic;
using System.IO;
using System.Runtime.Serialization.Json;
using System.Drawing;

namespace Test
{
    class Program
    {
        static void Main(string[] args)
        {
            List<DataColor> ListdataColor = new List<DataColor>();

            DataColor CurrentData = new DataColor(6, 6);
                        
            Bitmap bmp = new Bitmap(Image.FromFile("C:\\Users\\Acer\\Desktop\\MarkerTest.png"));
            Color pixelColor;

            for (int i = 0; i < 6; i++)
            {
                for (int j = 0; j < 6; j++)
                {
                    pixelColor = bmp.GetPixel(i, j);

                    CurrentData.Colors[i][j].ColorR = pixelColor.R;
                    CurrentData.Colors[i][j].ColorG = pixelColor.G;
                    CurrentData.Colors[i][j].ColorB = pixelColor.B;
                }
            }

            ListdataColor.Add(CurrentData);

            string pathjson = "C:\\Users\\Acer\\Desktop\\MarkerTest.json";

            var jsonFormatter = new DataContractJsonSerializer(typeof(List<DataColor>));            

            using (var file = new FileStream(pathjson, FileMode.OpenOrCreate))
            {
                jsonFormatter.WriteObject(file, ListdataColor);
            }

            Console.ReadKey();
        }
    }
}

...
Рейтинг: 0 / 0
Повернутое изображение
    #40046282
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Когда открываешь на питоне, то изображение почему то повернутое на 90 градусов против часовой стрелки. См. скриншот.
...
Рейтинг: 0 / 0
Повернутое изображение
    #40046283
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Учитывая, что в BitMap система координат начинается слева вверху. Но на скриншоте повернута на 90 градусов.

Похоже не правильно использую GetPixel .

Скажите, как правильно написать код?
...
Рейтинг: 0 / 0
Повернутое изображение
    #40046428
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Надо было поменять местами i и j
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
            for (int i = 0; i < 6; i++)
            {
                for (int j = 0; j < 6; j++)
                {
                    pixelColor = bmp.GetPixel(j, i);

                    CurrentData.Colors[i][j].ColorR = pixelColor.R;
                    CurrentData.Colors[i][j].ColorG = pixelColor.G;
                    CurrentData.Colors[i][j].ColorB = pixelColor.B;
                }
            }
...
Рейтинг: 0 / 0
Повернутое изображение
    #40046471
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ferzmikk
Надо было поменять местами i и j

В общем, по экспериментировал и обнаружил интересную вещь, что есть разница, если использовать GetPixel для PictureBox и для JSON.

На форме имеется PictureBox и Button .
class Form1
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
using System;
using System.Collections.Generic;
using System.Drawing;
using System.IO;
using System.Runtime.Serialization.Json;
using System.Windows.Forms;
using System.Drawing.Imaging;

namespace Test
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }        

        private void button1_Click(object sender, EventArgs e)
        {
            Bitmap OriginBitmap;
            List<DataColor> ListdataColor = new List<DataColor>();
            DataColor CurrentData = new DataColor(6, 6);

            //Получаем изображение 6 на 6
            Image image = Image.FromFile("C:\\Users\\Acer\\Desktop\\MarkerTest.png");

            OriginBitmap = new Bitmap(image);            

            //Квадрат, который вырезается из OriginBitmap (в данном случае вырезаем целиком)
            Rectangle cloneRect = new Rectangle(0, 0, 6, 6);

            //Получаем вырезанное изображение
            PixelFormat format = OriginBitmap.PixelFormat;
            Bitmap cloneBitmap = OriginBitmap.Clone(cloneRect, format);

            Color pixelColorForForm, pixelColorForJSON;
            SolidBrush pixelBrush;

            //Создаем увеличенное изображение, чтобы каждый пиксель был виден
            Bitmap newBitmap = new Bitmap(6 * 10, 6 * 10);
            using (Graphics g = Graphics.FromImage(newBitmap))
            {
                CurrentData = new DataColor(6, 6);

                for (int i = 0; i < 6; i++)
                {
                    for (int j = 0; j < 6; j++)
                    {
                        pixelColorForForm = cloneBitmap.GetPixel(i, j);
                        pixelColorForJSON = cloneBitmap.GetPixel(j, i);

                        pixelBrush = new SolidBrush(pixelColorForForm);

                        g.FillRectangle(pixelBrush, i * 10, j * 10, 10, 10);

                        CurrentData.Colors[i][j].ColorR = pixelColorForJSON.R;
                        CurrentData.Colors[i][j].ColorG = pixelColorForJSON.G;
                        CurrentData.Colors[i][j].ColorB = pixelColorForJSON.B;
                    }
                }                

                g.Dispose();
            }

            pictureBox1.Image = newBitmap;

            //Для JSON
            ListdataColor.Add(CurrentData);

            string pathjson = "C:\\Users\\Acer\\Desktop\\MarkerTest.json";

            var jsonFormatter = new DataContractJsonSerializer(typeof(List<DataColor>));

            using (var file = new FileStream(pathjson, FileMode.OpenOrCreate))
            {
                jsonFormatter.WriteObject(file, ListdataColor);
            }

        }
    }
}

...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Повернутое изображение
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]