Как сохранить изображения с уникальными именами с помощью цикла?
У меня есть 3 кнопки..
1) откройте изображение 2)Сохраните изображение 3) сохраните шаблон..
Если у меня есть папка из 100 изображений,то при нажатии на кнопку "Открыть изображение" мне нужно запустить цикл,чтобы каждое изображение вместе с его шаблоном автоматически сохранялось в разных папках...
Код:
public partial class EnrollFromImage : UserControl { public EnrollFromImage() { InitializeComponent(); openFileDialog.Filter = NImages.GetOpenFileFilterString(true, true); saveFileDialog.Filter = NImages.GetSaveFileFilterString(); } private NImage _image; private NBiometricClient _biometricClient; private NSubject _subject; private NFinger _subjectFinger; private byte _defaultThreshold; public NBiometricClient BiometricClient { get { return _biometricClient; } set { _biometricClient = value; _defaultThreshold = _biometricClient.FingersQualityThreshold; thresholdNumericUpDown.Value = _defaultThreshold; } } private void OnExtractionCompleted(IAsyncResult r) { if (InvokeRequired) { BeginInvoke(new AsyncCallback(OnExtractionCompleted), r); } else { NBiometricStatus status = NBiometricStatus.None; try { status = _biometricClient.EndCreateTemplate(r); if (status != NBiometricStatus.Ok) { MessageBox.Show(string.Format(@"Extraction failed. Status: {0}", status), Text, MessageBoxButtons.OK); } } catch (Exception ex) { Utils.ShowException(ex); } finally { if (status == NBiometricStatus.Ok) { lblQuality.Text = string.Format("Quality: {0}", _subjectFinger.Objects.First().Quality); saveImageButton.Enabled = true; saveTemplateButton.Enabled = true; chbShowBinarizedImage.Enabled = true; } else { lblQuality.Text = string.Empty; fingerView2.Finger = null; _subject = null; _subjectFinger = null; } } } } private void ExtractFeatures() { if (_image == null) return; saveImageButton.Enabled = false; saveTemplateButton.Enabled = false; chbShowBinarizedImage.Enabled = false; // Create a finger subject and begin extracting _subjectFinger = new NFinger { Image = _image }; _subject = new NSubject(); _subject.Fingers.Add(_subjectFinger); fingerView2.Finger = _subjectFinger; _biometricClient.BeginCreateTemplate(_subject, OnExtractionCompleted, null); } private void OpenButtonClick(object sender, EventArgs e) { openFileDialog.Filter = "Images (*.BMP;*.JPG;*.GIF)|*.BMP;*.JPG;*.GIF|All files (*.*)|*.*"; openFileDialog.Multiselect = true; openFileDialog.FileName = null; if (openFileDialog.ShowDialog() == DialogResult.OK) { try { if (_image != null) { _image.Dispose(); _image = null; } lblQuality.Text = string.Empty; fingerView1.Finger = null; fingerView2.Finger = null; extractFeaturesButton.Enabled = false; saveImageButton.Enabled = false; saveTemplateButton.Enabled = false; _image = NImage.FromFile(openFileDialog.FileName); var finger = new NFinger { Image = _image }; fingerView1.Finger = finger; extractFeaturesButton.Enabled = true; ExtractFeatures(); } catch (Exception ex) { Utils.ShowException(ex); } } } private void ExtractFeaturesButtonClick(object sender, EventArgs e) { ExtractFeatures(); } private void DefaultButtonClick(object sender, EventArgs e) { thresholdNumericUpDown.Value = _defaultThreshold; } private void SaveImageButtonClick(object sender, EventArgs e) { if (_subjectFinger != null) { saveFileDialog.InitialDirectory = "C:/Users/admin/Desktop/Save_Images"; saveFileDialog.FileName = string.Empty; saveFileDialog.Filter = NImages.GetSaveFileFilterString(); if (saveFileDialog.ShowDialog() == DialogResult.OK) { try { if (chbShowBinarizedImage.Checked) { _subjectFinger.BinarizedImage.Save(saveFileDialog.FileName); } else { _subjectFinger.Image.Save(saveFileDialog.FileName); } } catch (Exception ex) { Utils.ShowException(ex); } } } } private void ThresholdNumericUpDownValueChanged(object sender, EventArgs e) { if (_biometricClient != null) { _biometricClient.FingersQualityThreshold = (byte)thresholdNumericUpDown.Value; defaultButton.Enabled = true; } } private void SaveTemplateButtonClick(object sender, EventArgs e) { if (_subject != null) { saveFileDialog.InitialDirectory = "C:/Users/admin/Desktop/Savedtemp_Datfiles"; saveFileDialog.FileName = string.Empty; saveFileDialog.Filter = "Data Files (*.dat)|*.dat"; saveFileDialog.DefaultExt= "dat"; saveFileDialog.AddExtension = true; if (saveFileDialog.ShowDialog() == DialogResult.OK) { try { File.WriteAllBytes(saveFileDialog.FileName, _subject.GetTemplateBuffer().ToArray()); } catch (Exception ex) { Utils.ShowException(ex); } } } } private void EnrollFromImageVisibleChanged(object sender, EventArgs e) { if (Visible && _biometricClient != null) { thresholdNumericUpDown.Value = _defaultThreshold; thresholdNumericUpDown.Enabled = true; defaultButton.Enabled = true; _biometricClient.FingersReturnBinarizedImage = true; } } private void ChbShowBinarizedImageCheckedChanged(object sender, EventArgs e) { fingerView2.ShownImage = chbShowBinarizedImage.Checked ? ShownImage.Result : ShownImage.Original; } private void FingerView2MouseClick(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Right && chbShowBinarizedImage.Enabled) { chbShowBinarizedImage.Checked = !chbShowBinarizedImage.Checked; } } }
Что я уже пробовал:
я получил возможность сохранять изображения в разных папках вручную...но я не понимаю, как сохранить автоматически без участия пользователя..
Richard MacCutchan
Пожалуйста, не просто сбрасывайте груз неформатированного кода и не ожидайте, что кто-то проанализирует, отладит и исправит его для вас. Задайте правильный вопрос с подробностями.
ZurdoDev
Что ты имеешь в виду? Вы не хотите, чтобы они нажали кнопку? Я не понимаю вашего вопроса.
OriginalGriff
Это не очень хороший вопрос - мы не можем понять из этого малого, что вы пытаетесь сделать.
Помните, что мы не можем видеть ваш экран, получить доступ к вашему жесткому диску или прочитать ваши мысли.
Почему кнопка "Открыть изображение" должна что-то сохранять? Разве это не работа кнопки "Сохранить Изображение"?
И в чем проблема? Где ты застрял? Какая помощь вам нужна?
Используйте виджет" улучшить вопрос", чтобы отредактировать свой вопрос и предоставить более подробную информацию.