Частота дискретизации D = 44000 гц разрядность i = 16 бит t = 1 мин = 60 сек. Стереозапись включает в себя 2 дорожки,а значит объем информации увеличивается вдвое, поэтому добавим в конечную формулу коэффициент 2. Объем информации L =2*D*i*t = 44000*16*60*2=84480000 бит=10560000 байт=10Мбайт.
Using System; using System.Drawing; using System.Drawing.Drawing2D; using System.Drawing.Imaging; using System.IO; using System.Windows.Forms;
namespace WindowsFormsApplication1 { public partial class Form1 : Form {
private readonly Pen mainPen_ = new Pen(Color.Blue, 4); private Bitmap bmp_; private Point currentPoint_; private Graphics g; private Point previousPoint_;
public Form1() { this.InitializeComponent(); }
private void bOpen_Click(object sender, EventArgs e) { // Описываем объект класса OpenFileDialog var dialog = new OpenFileDialog { Filter = "Image files (*.BMP, *.JPG, *.GIF, *.PNG)|*.bmp;*.jpg;*.gif;*.png" }; // Задаем расширения файлов // Вызываем диалог и проверяем выбран ли файл if (dialog.ShowDialog() != DialogResult.OK) { return; } // Загружаем изображение из выбранного файла var image = Image.FromFile(dialog.FileName); this.pictureBox1.Width = image.Width; this.pictureBox1.Height = image.Height; // Создаем и загружаем изображение в формате bmp84 this.bmp_ = new Bitmap(image); // Записываем изображение в pictureBox1 this.pictureBox1.Image = this.bmp_; // Подготавливаем объект Graphics для рисования this.g = Graphics.FromImage(this.pictureBox1.Image); this.g.SmoothingMode = SmoothingMode.AntiAlias; }
private void pictureBox1_MouseDown(object sender, MouseEventArgs e) { // Записываем в предыдущую точку текущие координаты this.previousPoint_ = new Point(e.X, e.Y); }
private void pictureBox1_MouseMove(object sender, MouseEventArgs e) { // Проверяем нажата ли левая кнопка мыши if (e.Button != MouseButtons.Left) { return; } // Запоминаем текущее положение курсора мыши this.currentPoint_ = new Point(e.X, e.Y); // Соеденяем линией предыдущую точку с текущей
this.g.DrawLine(this.mainPen_, this.previousPoint_, this.currentPoint_); // Текущее положение курсора - в previousPoint_ this.previousPoint_ = this.currentPoint_; // Принудительно вызываем перерисовку this.pictureBox1.Invalidate(); }
private void bSave_Click(object sender, EventArgs e) { // Описываем и порождаем объект savedialog var savedialog = new SaveFileDialog { Title = "Сохранить картинку как...", OverwritePrompt = true, CheckPathExists = true, Filter = "Bitmap File(*.bmp)|*.bmp|" + "GIF File(*.gif)|*.gif|" + "JPEG File(*.jpg)|*.jpg|" + "PNG File(*.png)|*.png" }; // Показываем диалог и проверяем задано ли имя файла if (savedialog.ShowDialog() != DialogResult.OK) { return; }
var format = ImageFormat.Jpeg; switch (Path.GetExtension(savedialog.FileName)) { case "bmp": format = ImageFormat.Bmp; break; case "jpg": format = ImageFormat.Jpeg; break; case "gif": format = ImageFormat.Gif; break; case "tif": format = ImageFormat.Tiff; break; case "png": format = ImageFormat.Png; break; default: break; } this.bmp_.Save(savedialog.FileName, format); }
private void bChangePixels_Click(object sender, EventArgs e) { // Циклы для перебора всех пикселей на изображении for (var x = 1; x < this.bmp_.Width; x++) { for (var y = 1; y < this.bmp_.Height; y++) { var c = this.bmp_.GetPixel(x, y); if (c.B >= 200 && (c.R + c.G) <= 200) { this.bmp_.SetPixel(x, y, Color.Red); } } this.Refresh(); } }
разрядность i = 16 бит
t = 1 мин = 60 сек.
Стереозапись включает в себя 2 дорожки,а значит объем информации увеличивается вдвое, поэтому добавим в конечную формулу коэффициент 2.
Объем информации L =2*D*i*t = 44000*16*60*2=84480000 бит=10560000 байт=10Мбайт.
ответ: одна минута стереозаписи занимает 10Мбайт.
L = 700Мбайт = 734003200 байт
D = 44000 гц
i=16 бит = 2 байта
(тип звукозаписи - стерео => добавляется коэффициент 2)
t=L/(D*i*2)
t = 734003200/(2*44000*2) = 4170,47 сек = 69,5 мин.
ответ: 69,5 минут максимальная продолжительность стереозаписи на диске 700 Мбайт
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
using System.IO;
using System.Windows.Forms;
namespace WindowsFormsApplication1 {
public partial class Form1 : Form {
private readonly Pen mainPen_ = new Pen(Color.Blue, 4);
private Bitmap bmp_;
private Point currentPoint_;
private Graphics g;
private Point previousPoint_;
public Form1() {
this.InitializeComponent();
}
private void bOpen_Click(object sender, EventArgs e) {
// Описываем объект класса OpenFileDialog
var dialog = new OpenFileDialog {
Filter = "Image files (*.BMP, *.JPG, *.GIF, *.PNG)|*.bmp;*.jpg;*.gif;*.png"
};
// Задаем расширения файлов
// Вызываем диалог и проверяем выбран ли файл
if (dialog.ShowDialog() != DialogResult.OK) {
return;
}
// Загружаем изображение из выбранного файла
var image = Image.FromFile(dialog.FileName);
this.pictureBox1.Width = image.Width;
this.pictureBox1.Height = image.Height;
// Создаем и загружаем изображение в формате bmp84
this.bmp_ = new Bitmap(image);
// Записываем изображение в pictureBox1
this.pictureBox1.Image = this.bmp_;
// Подготавливаем объект Graphics для рисования
this.g = Graphics.FromImage(this.pictureBox1.Image);
this.g.SmoothingMode = SmoothingMode.AntiAlias;
}
private void pictureBox1_MouseDown(object sender, MouseEventArgs e) {
// Записываем в предыдущую точку текущие координаты
this.previousPoint_ = new Point(e.X, e.Y);
}
private void pictureBox1_MouseMove(object sender, MouseEventArgs e) {
// Проверяем нажата ли левая кнопка мыши
if (e.Button != MouseButtons.Left) {
return;
}
// Запоминаем текущее положение курсора мыши
this.currentPoint_ = new Point(e.X, e.Y);
// Соеденяем линией предыдущую точку с текущей
this.g.DrawLine(this.mainPen_, this.previousPoint_, this.currentPoint_);
// Текущее положение курсора - в previousPoint_
this.previousPoint_ = this.currentPoint_;
// Принудительно вызываем перерисовку
this.pictureBox1.Invalidate();
}
private void bSave_Click(object sender, EventArgs e) {
// Описываем и порождаем объект savedialog
var savedialog = new SaveFileDialog {
Title = "Сохранить картинку как...",
OverwritePrompt = true,
CheckPathExists = true,
Filter =
"Bitmap File(*.bmp)|*.bmp|" +
"GIF File(*.gif)|*.gif|" +
"JPEG File(*.jpg)|*.jpg|" +
"PNG File(*.png)|*.png"
};
// Показываем диалог и проверяем задано ли имя файла
if (savedialog.ShowDialog() != DialogResult.OK) {
return;
}
var format = ImageFormat.Jpeg;
switch (Path.GetExtension(savedialog.FileName)) {
case "bmp":
format = ImageFormat.Bmp;
break;
case "jpg":
format = ImageFormat.Jpeg;
break;
case "gif":
format = ImageFormat.Gif;
break;
case "tif":
format = ImageFormat.Tiff;
break;
case "png":
format = ImageFormat.Png;
break;
default:
break;
}
this.bmp_.Save(savedialog.FileName, format);
}
private void bChangePixels_Click(object sender, EventArgs e) {
// Циклы для перебора всех пикселей на изображении
for (var x = 1; x < this.bmp_.Width; x++) {
for (var y = 1; y < this.bmp_.Height; y++) {
var c = this.bmp_.GetPixel(x, y);
if (c.B >= 200 && (c.R + c.G) <= 200) {
this.bmp_.SetPixel(x, y, Color.Red);
}
}
this.Refresh();
}
}
}
}