Hello Dear Experts! Perhaps a little off topic on the forum, but still ... there is such a code for zennoposter, the so-called C # snippet:

Size ImgSize = new Size(400, 400); //Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ Π³ΠΎΡ‚ΠΎΠ²ΠΎΠΉ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ string img1 = project.Variables["img_url"].Value; // адрСс ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ ΠΆΠ΅Ρ€Ρ‚Π²Ρ‹ string saveDir = project.Variables["dir_name"].Value; //ΠΏΠ°ΠΏΠΊΠ° ΠΊΡƒΠ΄Π° ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Bitmap foreImg = new Bitmap(@"E:/ZP-prdj/1.png"); // адрСс Π²ΠΎΡ‚Π΅ΠΌΠ°Ρ€ΠΊΠ° Bitmap backImg = new Bitmap(img1); byte s = 255; // ImgSize = ΠΎΠ±Π΅ исходныС ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ приводятся ΠΊ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡƒ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ // s ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎΡΡ‚ΡŒ Π½Π°ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π΅ΠΌΠΎΠ³ΠΎ изобраТСния foreImg ΠΎΡ‚ 0 (100%) Π΄ΠΎ 255 (0%) // Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ наслСдуСт ΠΠ»ΡŒΡ„Π°-ΠΊΠ°Π½Π°Π» Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠ³ΠΎ изобраТСния // Π½Π°Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΠ»ΡŒΡ„Π°-ΠΊΠ°Π½Π°Π» Π½Π°ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π΅ΠΌΠΎΠ³ΠΎ изобраТСния Bitmap fimg = new Bitmap(foreImg, ImgSize); Bitmap bimg = new Bitmap(backImg, ImgSize); Bitmap bmp = new Bitmap(ImgSize.Width, ImgSize.Height); for (int i = 0; i < bmp.Width; i++) for (int j = 0; j < bmp.Height; j++) { Color fm = fimg.GetPixel(i, j); Color bm = bimg.GetPixel(i, j); byte af = (byte)(fm.A * s / byte.MaxValue); byte a = bm.A; byte r = (byte)((fm.R * af + bm.R * (byte.MaxValue - af)) / byte.MaxValue); byte g = (byte)((fm.G * af + bm.G * (byte.MaxValue - af)) / byte.MaxValue); byte b = (byte)((fm.B * af + bm.B * (byte.MaxValue - af)) / byte.MaxValue); bmp.SetPixel(i, j, Color.FromArgb(a, r, g, b)); } bmp.Save(@"E:/ZP-prdj/"+saveDir+"/img_new.jpg"); 

in theory it should work but gives an error:

screenshot of error from zenoposter

Please help me correct the code and correct the error. Thank you for attention!

  • wrap everything up in using - Grundy

1 answer 1

Apparently, zennoposter does not like when Disposable variables live too long.

Wrap the variables mentioned in using:

 Size ImgSize = new Size(400, 400); //Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ Π³ΠΎΡ‚ΠΎΠ²ΠΎΠΉ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ string img1 = project.Variables["img_url"].Value; // адрСс ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ ΠΆΠ΅Ρ€Ρ‚Π²Ρ‹ string saveDir = project.Variables["dir_name"].Value; //ΠΏΠ°ΠΏΠΊΠ° ΠΊΡƒΠ΄Π° ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ using (Bitmap foreImg = new Bitmap(@"E:/ZP-prdj/1.png") // адрСс Π²ΠΎΡ‚Π΅ΠΌΠ°Ρ€ΠΊΠ° { using (Bitmap backImg = new Bitmap(img1) { byte s = 255; // ImgSize = ΠΎΠ±Π΅ исходныС ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ приводятся ΠΊ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡƒ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ // s ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎΡΡ‚ΡŒ Π½Π°ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π΅ΠΌΠΎΠ³ΠΎ изобраТСния foreImg ΠΎΡ‚ 0 (100%) Π΄ΠΎ 255 (0%) // Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ наслСдуСт ΠΠ»ΡŒΡ„Π°-ΠΊΠ°Π½Π°Π» Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠ³ΠΎ изобраТСния // Π½Π°Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΠ»ΡŒΡ„Π°-ΠΊΠ°Π½Π°Π» Π½Π°ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π΅ΠΌΠΎΠ³ΠΎ изобраТСния using (Bitmap fimg = new Bitmap(foreImg, ImgSize)) { using (Bitmap bimg = new Bitmap(backImg, ImgSize)) { using (Bitmap bmp = new Bitmap(ImgSize.Width, ImgSize.Height)) { // Ρ†ΠΈΠΊΠ»Ρ‹ bmp.Save(@"E:/ZP-prdj/"+saveDir+"/img_new.jpg"); } } } } } 
  • there he just cursed foreImg , so everything would have to be wrapped :-) - Grundy
  • @Grundy drew back :) - PashaPash ♦
  • We need more using inside using :) - Grundy
  • By the way, since there’s one type, you can put them all in one yuzing - Grundy
  • 2
    @KinoTrailers wrote to you how to do it. - Pavel Mayorov