2つのフォームがあります。1つは画像圧縮を処理し、2つは詳細を処理します。のような詳細; ビットマップ、画質、保存ファイル名を参照します。
私が現在抱えている問題は、ビットマップがnullとしてフォーム1に戻っていることです。これにより、エラーが発生しますObject reference not set to an instance of an object
問題はどこにありますか?私は画面を見つめすぎていたので、もう1組の目が本当に役に立ちました。
コードフォーム1:
public void compressImg(Bitmap bitmp, string fileName, int quality)
{
//string fileName = Microsoft.VisualBasic.Interaction.InputBox("Enter a file name:", "Save File", "JPEGCompress", 250, 250);
ImageCodecInfo[] codecs = ImageCodecInfo.GetImageEncoders();
ImageCodecInfo ici = null;
foreach (ImageCodecInfo codec in codecs)
{
if (codec.MimeType == "image/jpeg")
ici = codec;
}
EncoderParameters ep = new EncoderParameters();
ep.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, (long)quality);
bitmp.Save("C:\\" + fileName + ".jpg", ici, ep);
}
private void compressAnImageToolStripMenuItem_Click(object sender, EventArgs e)
{
string fileName;
int quality;
Bitmap bitmp;
Form2 f2 = new Form2();
f2.ShowDialog();
fileName = f2.getFileName;
quality = f2.getQuality;
bitmp = f2.getBtmap;
//Bitmap newbitmp = new Bitmap(bitmp);
compressImg(bitmp, fileName, quality);
}
コードフォーム2:
public partial class Form2 : Form
{
public static string fileName;
public static int quality;
public Bitmap bitmp, bitmap1;
public Form2()
{
InitializeComponent();
}
private void Form2_Load(object sender, EventArgs e)
{
}
public string getFileName
{
get { return fileName; }
set { fileName = txtFileName.Text; }
}
public int getQuality
{
get { return quality; }
set { quality = imgQualTrkBar.Value; }
}
private void BtnSubmitInfo_Click(object sender, EventArgs e)
{
this.Close();
}
private void button1_Click(object sender, EventArgs e)
{
if (openFileDialog2.ShowDialog() == DialogResult.OK)
{
bitmp = new Bitmap(openFileDialog2.FileName);
}
}
public Bitmap getBtmap
{
get { return bitmap1; }
set { bitmap1 = new Bitmap(bitmp); }
}
}
}