2

WinForm に OpenFileDialog があり、いつ画像を選択して画像のサイズを 100 Ko に、寸法を 350x350 に制限したいのですか。

どうやってやるの ??

4

4 に答える 4

4

サポートする必要のある画像の種類によって異なります。最も一般的なタイプ(bmp、jpg、png)の場合、画像情報を簡単に取得できます。

string filename = // get it from OpenFileDialog

if (new FileInfo(filename).Length > SOME_LIMIT)
{
  MessageBox.Show("!!!");
}
else
{
  Image img = Image.FromFile(filename);
  MessageBox.Show(string.Format("{0} x {1}", img.Width, img.Height));
}

多くの画像形式のより広範なサポートが必要な場合は、ImageMagick.NETなどのライブラリを使用することをお勧めします

于 2012-09-19T09:17:07.623 に答える
4
private bool ValidFile(string filename, long limitInBytes, int limitWidth, int limitHeight)
        {
            var fileSizeInBytes = new FileInfo(filename).Length;
            if(fileSizeInBytes > limitInBytes) return false;

            using(var img = new Bitmap(filename))
            {
                if(img.Width > limitWidth || img.Height > limitHeight) return false;
            }

            return true;
        }

        private void selectImgButton_Click(object sender, EventArgs e)
        {
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                if(ValidFile(openFileDialog1.FileName, 102400, 350, 350))
                {
                    // Image is valid and U can
                    // Do something with image
                    // For example set it to a picture box
                    pictureBox1.Image = new Bitmap(openFileDialog1.FileName);
                }
                else
                {
                    MessageBox.Show("Image is invalid");
                }
            }
        }
于 2012-09-19T09:46:48.363 に答える
0

これを試して :

OpenFileDialog fileDialog = new OpenFileDialog
{
    // managed GDI+ supports bmp, jpeg, gif, png and tiff.
    Filter =
        "Image files (*.bmp;*.jpg;*.gif;*.png;*.tiff)|*.bmp;*.jpg;*.gif;*.png;*.tiff|All files (*.*)|*.*",
};
if (fileDialog.ShowDialog() == DialogResult.OK)
{
    // Many exceptions could be raised in the following code
    try
    {
        var fileSize = new FileInfo(fileDialog.FileName);
        var validFilesize = fileSize.Length <= 1024 * 100; // 100 kilo bytes
        var validDimensions = false;

        // free the file once we get the dimensions
        using (Image image = Image.FromFile(fileDialog.FileName))
        {
            validDimensions = (image.Width <= 350) && (image.Height <= 350);
        }

        if (!validDimensions || !validFilesize)
        {
            MessageBox.Show("Error ! Choose another image");
        } 
        else
        {
            // do something with the file here
        }
    }
    catch (Exception exception)
    {
        MessageBox.Show(exception.Message);
    }
}
于 2012-09-19T09:40:03.500 に答える
0

これをグローバル変数として入れます

int imgSize = 0


private void button1_Click(object sender, EventArgs e)
{
  Image imageFile;
  OpenFileDialog dlg = new OpenFileDialog();

  dlg.Title = "Open Image";
  dlg.Filter = "jpg files (*.jpg)|*.jpg|All files (*.*)|*.*";

  if (dlg.ShowDialog() == DialogResult.OK)
     {
      imageFile = Image.FromFile(dlg.FileName);
      imgHeight = imageFile.Height;
      if (imgHeight > 350)
         {
              MessageBox.Show("Not 350x350 Image", "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                                imgPhoto.Image = null;
         }
         else
         {
           PictureBox1.Image = new Bitmap(dlg.OpenFile());
         }
      }
  dlg.Dispose();
}

これが役立つことを願っています。

于 2012-09-19T09:25:07.250 に答える