Stworzyłem dwa obrazy pierwsze, to obraz kodów kreskowych, a druga jest skuimage po tym, jak połączyłem go na 3rd obrazu (ostateczny obraz). Po pomyślnym połączeniu chcę usunąć obraz kodów kreskowych i obrazu SKU z określonego folderu, ale kiedy próbuję usunąć plik obrazu, daje mi błąd I.e "Proces nie może uzyskać dostępu do ścieżki pliku, ponieważ jest używany przez inny proces". Przed usunięciem usuwania obrazu takiego jak ten "skuimage.dyspose ()" ale nie usuwa. Jak to usunąć?

barcodeImage = b.Encode(BarcodeLib.TYPE.CODE128, "001234", Color.Black, Color.White, 113, 18);
Bitmap SkuImage = new Bitmap(113, 18, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
RectangleF rectf = new RectangleF(10, 5, 113, 18);
Graphics graphics = Graphics.FromImage(SkuImage);
// SkuImage.SetPixel(10,10,Color.Blue);
graphics.DrawString(StringToEncode, new Font("Arial", 4), Brushes.Black, rectf);
b.SaveImage(MemStream, savetype);
MemStream.Close();
barcodeImage.Dispose();
SkuImage.Save(imgSkupath);
SkuImage.Dispose();
g.Clear(Color.White);   //here change BG color of Image
g.DrawImage(Image.FromFile("E:\\" + @"Pankaj/BarcodeDemo/BarcodeDemo/BarcodeImage/" + Filename), new Point(15, 15));
g.DrawImage(Image.FromFile("E:\\" + @"Pankaj/BarcodeDemo/BarcodeDemo/BarcodeImage/Sku.jpg"), new Point(25, 30));
img.Save("E:\\" + @"Pankaj/BarcodeDemo/BarcodeDemo/BarcodeImage/FinalImage.jpeg", ImageFormat.Jpeg);
File.Delete("E:\\" + @"Pankaj/BarcodeDemo/BarcodeDemo/BarcodeImage/Sku.jpg");
File.Delete("E:\\" + @"Pankaj/BarcodeDemo/BarcodeDemo/BarcodeImage/" + Filename);
-1
pankaj 4 czerwiec 2018, 11:58

3 odpowiedzi

Najlepsza odpowiedź
               string Filename = "Barcodeimage" + i + ".jpeg";



                string imgsavepath = "E:\\Pankaj\\BarcodeDemo\\BarcodeDemo\\BarcodeImage\\" + "BarcodeImg.jpeg";

                string imgSkupath = "E:\\Pankaj\\BarcodeDemo\\BarcodeDemo\\BarcodeImage\\" + "Sku.jpeg";
                BarcodeLib.SaveTypes savetype = BarcodeLib.SaveTypes.UNSPECIFIED;
                savetype = BarcodeLib.SaveTypes.JPG;
                System.IO.FileStream MemStream = new FileStream(imgsavepath, FileMode.Create, FileAccess.Write);

                System.Drawing.Image barcodeImage = null;
                //Bitmap FinalImage = null;
                BarcodeLib.Barcode b = new BarcodeLib.Barcode();


                //b.IncludeLabel = true;
                b.LabelFont = new Font("Arial", 5);

                string sku = "SKU:VXN4214IN";
                string StringToEncode = "16280/" + i + ' ' + sku;

                Image img = new Bitmap(130, 50);  //final image

                Graphics g = Graphics.FromImage(img);


                barcodeImage = b.Encode(BarcodeLib.TYPE.CODE128, "001234", Color.Black, Color.White, 113, 18);



                Bitmap SkuImage = new Bitmap(113, 18, System.Drawing.Imaging.PixelFormat.Format32bppArgb);

                RectangleF rectf = new RectangleF(10, 5, 113, 18);
                Graphics graphics = Graphics.FromImage(SkuImage);
                // SkuImage.SetPixel(10,10,Color.Blue);
                graphics.DrawString(StringToEncode, new Font("Arial", 4), Brushes.Black, rectf);



                b.SaveImage(MemStream, savetype);
                MemStream.Close();
                barcodeImage.Dispose();

                SkuImage.Save(imgSkupath);
                graphics.Dispose();
                SkuImage.Dispose();

                g.Clear(Color.White);   //here change BG color of Image



                System.IO.FileStream fileStream1 = new FileStream("E:\\" + @"Pankaj/BarcodeDemo/BarcodeDemo/BarcodeImage/BarcodeImg.jpeg", FileMode.Open, FileAccess.Read);

                System.IO.FileStream fileStream2 = new FileStream("E:\\" + @"Pankaj/BarcodeDemo/BarcodeDemo/BarcodeImage/Sku.jpeg", FileMode.Open, FileAccess.Read);


                g.DrawImage(Image.FromStream(fileStream1), new Point(15, 15));
                g.DrawImage(Image.FromStream(fileStream2), new Point(25, 30));
               // g.DrawImage(Image.FromFile("E:\\" + @"Pankaj/BarcodeDemo/BarcodeDemo/BarcodeImage/" + Filename), new Point(15, 15));
                //g.DrawImage(Image.FromFile("E:\\" + @"Pankaj/BarcodeDemo/BarcodeDemo/BarcodeImage/Sku.jpg"), new Point(25, 30));



                img.Save("E:\\" + @"Pankaj/BarcodeDemo/BarcodeDemo/BarcodeImage/"+Filename, ImageFormat.Jpeg);

                fileStream1.Close();
                fileStream2.Close();
                g.Dispose();

                 File.Delete("E:\\" + @"Pankaj/BarcodeDemo/BarcodeDemo/BarcodeImage/Sku.jpeg");
                 File.Delete("E:\\" + @"Pankaj/BarcodeDemo/BarcodeDemo/BarcodeImage/BarcodeImg.jpeg");
0
pankaj 8 czerwiec 2018, 08:54

Powinieneś zbyć każdą klasę, która realizuje się idisposable. Następnie możesz usunąć plik obrazu.

0
user8458667user8458667 4 czerwiec 2018, 09:23
Dim _strImagePath = ""
Dim _strImageName = "image.jpg"

'Get the path
_strImagePath = "YOUR_IMAGE_PATH"

'Delete the image physically
Dim strImageName As New FileInfo(_strImagePath & _strImageName)
If strImageName.Exists Then
   strImageName.Delete()
End If
0
Rami Zebian 8 czerwiec 2018, 09:00