Виртуальный Гардероб

VI Международный конкурс научно-исследовательских и творческих работ учащихся
Старт в науке

Виртуальный Гардероб

Севумян Т.С. 1
1ГБОУ ДО «Республиканский дворец детского творчества имени Б.Е. Кабалоева»
Алборова В.Э. 1
1ГБОУ ДО «Республиканский дворец детского творчества имени Б.Е. Кабалоева»
Автор работы награжден дипломом победителя II степени
Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке "Файлы работы" в формате PDF

Введение

Актуальной темой для любой девочки является выбор аксессуаров, будь то платья, брюки, головные уборы, обувь и т.д. И выбирая новые вещи в магазине, хочется сразу представить себе, как они будут выглядеть на нас, в сочетании с теми вещами, которые у нас уже есть. Потому, увидев что-то новое, мы мысленно подбираем к нему всё остальное.

Но в наш век прогресса вовсе необязательно осуществлять выбор только мысленно. Практически у каждого современного человека всегда с собой мобильный телефон или любое другое устройство, оснащенное фотокамерой. Поэтому можно просто сфотографировать понравившийся предмет и совместить с его с фотографиями чего-то другого, уже сохранённого ранее. Однако до сих пор не было создано хорошее мобильное приложение или приложение под Windows, позволяющее это сделать.

Я поставила перед собой задачу создать подобное приложение. Для этого я рассмотрела сайты популярных интернет-магазинов. Приложение было разработано в среде VisualStudio 2015 на языке программирования C#. Для работы с изображениями я использовала битовое поле (Bitmap), а для сохранения фотографий аксессуаров я применила сжатие изображений (вейвлет Хаара).

Глава 1. Виртуальный гардероб

Для современных устройств существует масса приложений, связанных с модой и одеждой. Много подобных программ способно ввести в заблуждение пользователя, да и на не очень качественные и функциональные приложения уйдет масса времени. Я расскажу о некоторых из них.

Cluise

Приложение пользуется огромным спросом среди пользователей, а подкупает оно максимально понятным дизайном и простотой использования. С помощью программы можно внести в приложение все то, что у вас есть во всех шкафах.

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

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

Stylicious

Это приложение для организации собственного гардероба и подбора стиля. Работа с приложением начинается с внесения всех предметов одежды, обуви и аксессуаров с указанием стиля и прочих особенностей. Впоследствии эти фотографии можно сочетать, чтобы создавать готовые наряды и не тратить время на примерки возле зеркала. Желаемую покупку можно также мгновенно «примерить» с другими предметами одежды, чтобы не принимать поспешных решений и не захламливать свой гардероб.

Благодаря встроенному календарю можно заранее планировать, что надеть. В приложении можно делать покупки. Кроме того, можно смотреть советы стилистов, делиться образами в социальных сетях и многое другое.

Глава 2. Мой проект

Это приложение создано, чтобы облегчить вашу жизнь. С помощью этого приложения вы можете собрать вместе свою одежду, обувь и аксессуары.

Во-первых, это поможет вам создать более полное представление о том, что у вас есть, а во-вторых, вы сможете сочетать вещи и смотреть, что у вас есть в гардеробе прямо на экране своего компьютера.

Для начала вам придется перебрать и сфотографировать все ваши вещи, чтобы внести их в приложение.

Возможно, для кого-то это приложение станет незаменимым помощником.

Внешний вид PersonalCloset

Литература

РихтерД. CLR via C#. Программирование на платформе Microsoft .NET Framework 4.5 на языке C#. 4-е изд. 2017 – 896с.

Виссер Дж. Разработка обслуживаемых программ на языке C# 2017 – 192 с.

Фаронов В.В. Создание приложений с помощью C#: Руководство программиста - М: «Эксмо», 2008. - 576 с.

Павловская Т.А. С#. Программирование на языке высокого уровня.Учебник для вузов.— СПб.:Питер,2009.—432с:ил.

ДжонШарп. Microsoft Visual C#. Подробное руководство – 848с.

Приложение

usingSystem;

usingSystem.Collections.Generic;

usingSystem.ComponentModel;

usingSystem.Data;

usingSystem.Drawing;

usingSystem.Linq;

usingSystem.Text;

using System.IO;

usingSystem.Windows.Forms;

namespacepersonal_closet

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

publicint k = 0;

//============= ЗАГРУЗИТЬГОЛОВНОЙУБОР =============

private void button1_Click(object sender, EventArgs e)

{

k = 0;

openFileDialog1.ShowDialog();

}

private void openFileDialog1_FileOk(object sender, CancelEventArgs e)

{

if(k==0)

pictureBox1.Load(openFileDialog1.FileName);

else if(k==1)

pictureBox4.Load(openFileDialog1.FileName);

else if (k == 2)

pictureBox5.Load(openFileDialog1.FileName);

else if (k == 3)

pictureBox6.Load(openFileDialog1.FileName);

}

staticint i = 0;

//=============== СОХРАНЯЕМ В ГАРДЕРОБ ГОЛОВНОЙ УБОР

private void button2_Click(object sender, EventArgs e)

{

// считываемпорядковыйномерсохраняемогоизображения

StreamReadersr = new StreamReader("gard/count.txt");

int n = Convert.ToInt32(sr.ReadLine());

sr.Close();

// увеличиваем порядковый номер на один

StreamWritersw = new StreamWriter("gard/count.txt");

sw.WriteLine(n + 1);

sw.Close();

// сохраняем изображение с очередным порядковым номером

Image im = pictureBox1.Image;

pictureBox2.Image = im;

string name = Convert.ToString(n)+".jpg";

im.Save("gard/"+name);

}

private void button3_Click(object sender, EventArgs e)

{

StreamReadersr = new StreamReader("gard/count.txt");

int n = Convert.ToInt32(sr.ReadLine());

sr.Close();

i = (i + 1)%n;

stringadr = "gard/" + Convert.ToString(i) + ".jpg";

pictureBox2.Load(adr);

}

private void button4_Click(object sender, EventArgs e)

{

// выборнужногоаксессуара

switch (comboBox1.SelectedIndex)

{

case 0: pictureBox1.Image=pictureBox2.Image;break;

case 1: pictureBox4.Image = pictureBox2.Image; break;

case 2: pictureBox5.Image = pictureBox2.Image; break;

case 3: pictureBox6.Image = pictureBox2.Image; break;

default: break;

}

}

private void button5_Click(object sender, EventArgs e)

{

// считываемпорядковыйномерсохраняемогоизображения

StreamReadersr = new StreamReader("want/count.txt");

int n = Convert.ToInt32(sr.ReadLine());

sr.Close();

// увеличиваем порядковый номер на один

StreamWritersw = new StreamWriter("want/count.txt");

sw.WriteLine(n + 1);

sw.Close();

// сохраняем изображение с очередным порядковым номером

Image im = pictureBox1.Image;

pictureBox3.Image = im;

string name = Convert.ToString(n) + ".jpg";

im.Save("want/" + name);

}

private void button6_Click(object sender, EventArgs e)

{

StreamReadersr = new StreamReader("want/count.txt");

int n = Convert.ToInt32(sr.ReadLine());

sr.Close();

i = (i + 1) % n;

stringadr = "want/" + Convert.ToString(i) + ".jpg";

pictureBox3.Load(adr);

}

private void button7_Click(object sender, EventArgs e)

{

switch (comboBox2.SelectedIndex)

{

case 0: pictureBox1.Image = pictureBox3.Image; break;

case 1: pictureBox4.Image = pictureBox3.Image; break;

case 2: pictureBox5.Image = pictureBox3.Image; break;

case 3: pictureBox6.Image = pictureBox3.Image; break;

default: break;

}

}

// ================ ЗАГРУЗИТЬВЕРХ =============

private void button10_Click(object sender, EventArgs e)

{

k = 1;

openFileDialog1.ShowDialog();

}

private void button8_Click(object sender, EventArgs e)

{

pictureBox1.Image = null;

}

private void button15_Click(object sender, EventArgs e)

{

// считываемпорядковыйномерсохраняемогоизображения

StreamReadersr = new StreamReader("gard/count.txt");

int n = Convert.ToInt32(sr.ReadLine());

sr.Close();

// увеличиваем порядковый номер на один

StreamWritersw = new StreamWriter("gard/count.txt");

sw.WriteLine(n + 1);

sw.Close();

// сохраняем изображение с очередным порядковым номером

Image im = pictureBox4.Image;

pictureBox2.Image = im;

string name = Convert.ToString(n) + ".jpg";

im.Save("gard/" + name);

}

private void button12_Click(object sender, EventArgs e)

{

k = 2;

openFileDialog1.ShowDialog();

}

private void button14_Click(object sender, EventArgs e)

{

k = 3;

openFileDialog1.ShowDialog();

}

private void button9_Click(object sender, EventArgs e)

{

pictureBox4.Image = null;

}

private void button16_Click(object sender, EventArgs e)

{

// считываемпорядковыйномерсохраняемогоизображения

StreamReadersr = new StreamReader("gard/count.txt");

int n = Convert.ToInt32(sr.ReadLine());

sr.Close();

// увеличиваем порядковый номер на один

StreamWritersw = new StreamWriter("gard/count.txt");

sw.WriteLine(n + 1);

sw.Close();

// сохраняем изображение с очередным порядковым номером

Image im = pictureBox5.Image;

pictureBox2.Image = im;

string name = Convert.ToString(n) + ".jpg";

im.Save("gard/" + name);

}

private void button17_Click(object sender, EventArgs e)

{

// считываем порядковый номер сохраняемого изображения

StreamReadersr = new StreamReader("gard/count.txt");

int n = Convert.ToInt32(sr.ReadLine());

sr.Close();

// увеличиваем порядковый номер на один

StreamWritersw = new StreamWriter("gard/count.txt");

sw.WriteLine(n + 1);

sw.Close();

// сохраняем изображение с очередным порядковым номером

Image im = pictureBox6.Image;

pictureBox2.Image = im;

string name = Convert.ToString(n) + ".jpg";

im.Save("gard/" + name);

}

private void button18_Click(object sender, EventArgs e)

{

// считываемпорядковыйномерсохраняемогоизображения

StreamReadersr = new StreamReader("want/count.txt");

int n = Convert.ToInt32(sr.ReadLine());

sr.Close();

// увеличиваем порядковый номер на один

StreamWritersw = new StreamWriter("want/count.txt");

sw.WriteLine(n + 1);

sw.Close();

// сохраняем изображение с очередным порядковым номером

Image im = pictureBox4.Image;

pictureBox3.Image = im;

string name = Convert.ToString(n) + ".jpg";

im.Save("want/" + name);

}

private void button19_Click(object sender, EventArgs e)

{

// считываемпорядковыйномерсохраняемогоизображения

StreamReadersr = new StreamReader("want/count.txt");

int n = Convert.ToInt32(sr.ReadLine());

sr.Close();

// увеличиваем порядковый номер на один

StreamWritersw = new StreamWriter("want/count.txt");

sw.WriteLine(n + 1);

sw.Close();

// сохраняем изображение с очередным порядковым номером

Image im = pictureBox5.Image;

pictureBox3.Image = im;

string name = Convert.ToString(n) + ".jpg";

im.Save("want/" + name);

}

private void button20_Click(object sender, EventArgs e)

{

// считываемпорядковыйномерсохраняемогоизображения

StreamReadersr = new StreamReader("want/count.txt");

int n = Convert.ToInt32(sr.ReadLine());

sr.Close();

// увеличиваем порядковый номер на один

StreamWritersw = new StreamWriter("want/count.txt");

sw.WriteLine(n + 1);

sw.Close();

// сохраняем изображение с очередным порядковым номером

Image im = pictureBox6.Image;

pictureBox3.Image = im;

string name = Convert.ToString(n) + ".jpg";

im.Save("want/" + name);

}

private void button13_Click(object sender, EventArgs e)

{

pictureBox6.Image = null;

}

private void button11_Click(object sender, EventArgs e)

{

pictureBox5.Image = null;

}

private void Form1_Load(object sender, EventArgs e)

{

comboBox1.SelectedIndex = 0;

comboBox2.SelectedIndex = 0;

stringadr = "gard/0.jpg";

try { pictureBox2.Load(adr); }

catch { }

adr = "want/0.jpg";

try { pictureBox3.Load(adr); }

catch { }

}

}

 

Просмотров работы: 403