Нубский код:Благодарю, а с помощью сниппета никак?
string img1 = @"C:\image1.jpg"; // Картинка раз
string img2 = @"C:\image2.jpg"; // Картинка два
Bitmap bm1 = new Bitmap(img1, true);
Bitmap bm2 = new Bitmap(img2, true);
int width = bm1.Width;
int height = bm1.Height + bm2.Height;
Bitmap bm = new Bitmap(width, height);
Graphics g = Graphics.FromImage(bm);
g.DrawImage(bm1, 0, 0, bm1.Width, bm1.Height);
g.DrawImage(bm2, 0, bm1.Height, bm2.Width, bm2.Height);
bm.Save(@"C:\newImage.jpg"); // Новая картинка
bm.Dispose();
bm1.Dispose();
bm2.Dispose();
отлично!Нубский код:
ЗЫ. Картинки должны быть одинаковой ширины, а то будут белые пустоты.C#:string img1 = @"C:\image1.jpg"; // Картинка раз string img2 = @"C:\image2.jpg"; // Картинка два Bitmap bm1 = new Bitmap(img1, true); Bitmap bm2 = new Bitmap(img2, true); int width = bm1.Width; int height = bm1.Height + bm2.Height; Bitmap bm = new Bitmap(width, height); Graphics g = Graphics.FromImage(bm); g.DrawImage(bm1, 0, 0, bm1.Width, bm1.Height); g.DrawImage(bm2, 0, bm1.Height, bm2.Width, bm2.Height); bm.Save(@"C:\newImage.jpg"); // Новая картинка bm.Dispose(); bm1.Dispose(); bm2.Dispose();
отличный код) А если картинки разной ширины, к примеру 1ая 500 пикселей, 2ая 300, как сделать, чтобы нижняя была по центру верхней? (пустоты пусть закрывает белым)Нубский код:
ЗЫ. Картинки должны быть одинаковой ширины, а то будут белые пустоты.C#:string img1 = @"C:\image1.jpg"; // Картинка раз string img2 = @"C:\image2.jpg"; // Картинка два Bitmap bm1 = new Bitmap(img1, true); Bitmap bm2 = new Bitmap(img2, true); int width = bm1.Width; int height = bm1.Height + bm2.Height; Bitmap bm = new Bitmap(width, height); Graphics g = Graphics.FromImage(bm); g.DrawImage(bm1, 0, 0, bm1.Width, bm1.Height); g.DrawImage(bm2, 0, bm1.Height, bm2.Width, bm2.Height); bm.Save(@"C:\newImage.jpg"); // Новая картинка bm.Dispose(); bm1.Dispose(); bm2.Dispose();
Учите геометрию и арифметику, вычисляйте размеры, пропорции и передвигайте в классе Bitmapa на нужные отступы.отличный код) А если картинки разной ширины, к примеру 1ая 500 пикселей, 2ая 300, как сделать, чтобы нижняя была по центру верхней? (пустоты пусть закрывает белым)
А, как сделать, чтоб тоже самое, но картинки склеивались одна за одной по горизонтали?Нубский код:
ЗЫ. Картинки должны быть одинаковой ширины, а то будут белые пустоты.C#:string img1 = @"C:\image1.jpg"; // Картинка раз string img2 = @"C:\image2.jpg"; // Картинка два Bitmap bm1 = new Bitmap(img1, true); Bitmap bm2 = new Bitmap(img2, true); int width = bm1.Width; int height = bm1.Height + bm2.Height; Bitmap bm = new Bitmap(width, height); Graphics g = Graphics.FromImage(bm); g.DrawImage(bm1, 0, 0, bm1.Width, bm1.Height); g.DrawImage(bm2, 0, bm1.Height, bm2.Width, bm2.Height); bm.Save(@"C:\newImage.jpg"); // Новая картинка bm.Dispose(); bm1.Dispose(); bm2.Dispose();
C# не знаю, но по логике видимо так -А, как сделать, чтоб тоже самое, но картинки склеивались одна за одной по горизонтали?
string img1 = @"C:\image1.jpg"; // Картинка раз
string img2 = @"C:\image2.jpg"; // Картинка два
Bitmap bm1 = new Bitmap(img1, true);
Bitmap bm2 = new Bitmap(img2, true);
int width = bm1.Width + bm2.Width;
int height = bm1.Height;
Bitmap bm = new Bitmap(width, height);
Graphics g = Graphics.FromImage(bm);
g.DrawImage(bm1, 0, 0, bm1.Width, bm1.Height);
g.DrawImage(bm2, bm1.Width, 0, bm2.Width, bm2.Height);
bm.Save(@"C:\newImage.jpg"); // Новая картинка
bm.Dispose();
bm1.Dispose();
bm2.Dispose();
Спасибо всё отлично работает. С логикой у Вас всё в порядке. А, может она вам подскажет, как склеить так-же не 2 а 3 картинки?C# не знаю, но по логике видимо так -
Код:string img1 = @"C:\image1.jpg"; // Картинка раз string img2 = @"C:\image2.jpg"; // Картинка два Bitmap bm1 = new Bitmap(img1, true); Bitmap bm2 = new Bitmap(img2, true); int width = bm1.Width + bm2.Width; int height = bm1.Height; Bitmap bm = new Bitmap(width, height); Graphics g = Graphics.FromImage(bm); g.DrawImage(bm1, 0, 0, bm1.Width, bm1.Height); g.DrawImage(bm2, bm1.Width, 0, bm2.Width, bm2.Height); bm.Save(@"C:\newImage.jpg"); // Новая картинка bm.Dispose(); bm1.Dispose(); bm2.Dispose();
Логика-то подскажет, куда она денется, но лучше самому попробовать - это ведь совсем не сложно.Спасибо всё отлично работает. С логикой у Вас всё в порядке. А, может она вам подскажет, как склеить так-же не 2 а 3 картинки?
Спасибо. Вы сейчас для меня столько незнакомых мне словеёв написали!Логика-то подскажет, куда она денется, но лучше самому попробовать - это ведь совсем не сложно.
Декларируем еще по одному string и bitmap, суммируем еще одну переменную с шириной третьего битмапа с первыми двумя. Вызываем еще один раз g.DrawImage указав новые координаты для третьей картинки.
Честно говоря не знаю, можно ли использовать в вызове g.DrawImage выражения, поэтому если не получится указать координаты так, то определить еще одну переменную int чуть раньше. Вот и все. Ну разве что Dispose для третьего битмапа в конце еще вставить...
Если путь определяется в шаблоне, то так:Как вместо этого:
string img1 = @"C:\image1.jpg";
Указать путь из переменной? Подскажите пожалуйста.
string img1 = project.Variables["ImagePath"].Value;
Спасибо. Картинка лежит в директории проекта, в подпапках. + к имени файла, добавляется цифра. Так будет правильно?Если путь определяется в шаблоне, то так:
C#:string img1 = project.Variables["ImagePath"].Value;
Синтаксис верный. Только скобки уберите.Спасибо. Картинка лежит в директории проекта, в подпапках. + к имени файла, добавляется цифра. Так будет правильно?
string img1 = (project.Directory + @"\profile\caps\" + project.Variables["Login"].Value + "10.jpg");
string img1 = project.Directory + @"\profile\caps\" + project.Variables["Login"].Value + "10.jpg";
а у меня выскакивает ошибкаНубский код:
ЗЫ. Картинки должны быть одинаковой ширины, а то будут белые пустоты.C#:string img1 = @"C:\image1.jpg"; // Картинка раз string img2 = @"C:\image2.jpg"; // Картинка два Bitmap bm1 = new Bitmap(img1, true); Bitmap bm2 = new Bitmap(img2, true); int width = bm1.Width; int height = bm1.Height + bm2.Height; Bitmap bm = new Bitmap(width, height); Graphics g = Graphics.FromImage(bm); g.DrawImage(bm1, 0, 0, bm1.Width, bm1.Height); g.DrawImage(bm2, 0, bm1.Height, bm2.Width, bm2.Height); bm.Save(@"C:\newImage.jpg"); // Новая картинка bm.Dispose(); bm1.Dispose(); bm2.Dispose();
Помогите пожалуйста. я совсем не разбираюсь в объявлении переменных. нужно переделать код ниже (который работает в PM, но не работает в ZP) правильно прописав переменные. Я заплачу 200 руб тому кто поможетНубский код:
ЗЫ. Картинки должны быть одинаковой ширины, а то будут белые пустоты.C#:string img1 = @"C:\image1.jpg"; // Картинка раз string img2 = @"C:\image2.jpg"; // Картинка два Bitmap bm1 = new Bitmap(img1, true); Bitmap bm2 = new Bitmap(img2, true); int width = bm1.Width; int height = bm1.Height + bm2.Height; Bitmap bm = new Bitmap(width, height); Graphics g = Graphics.FromImage(bm); g.DrawImage(bm1, 0, 0, bm1.Width, bm1.Height); g.DrawImage(bm2, 0, bm1.Height, bm2.Width, bm2.Height); bm.Save(@"C:\newImage.jpg"); // Новая картинка bm.Dispose(); bm1.Dispose(); bm2.Dispose();
string img1 = @"{-Project.Directory-}\данные\1.png"; // Картинка 1
string img2 = @"{-Project.Directory-}\images\image1\{-Variable.qim1-}"; // Картинка 2
Bitmap bm1 = new Bitmap(img1, true);
Bitmap bm2 = new Bitmap(img2, true);
int width = bm1.Width;
int height = bm1.Height + bm2.Height;
Bitmap bm = new Bitmap(width, height);
Graphics g = Graphics.FromImage(bm);
g.DrawImage(bm1, 0, 0, bm1.Width, bm1.Height);
g.DrawImage(bm2, 0, bm1.Height, bm2.Width, bm2.Height);
bm.Save(@"{-Project.Directory-}\images\bufer\{-Variable.qim1-}"); // Новая картинка
bm.Dispose();
bm1.Dispose();
bm2.Dispose();
Помогите пожалуйста. я совсем не разбираюсь в объявлении переменных. нужно переделать код ниже (который работает в PM, но не работает в ZP) правильно прописав переменные. Я заплачу 200 руб тому кто поможет
C#:string img1 = @"{-Project.Directory-}\данные\1.png"; // Картинка 1 string img2 = @"{-Project.Directory-}\images\image1\{-Variable.qim1-}"; // Картинка 2 Bitmap bm1 = new Bitmap(img1, true); Bitmap bm2 = new Bitmap(img2, true); int width = bm1.Width; int height = bm1.Height + bm2.Height; Bitmap bm = new Bitmap(width, height); Graphics g = Graphics.FromImage(bm); g.DrawImage(bm1, 0, 0, bm1.Width, bm1.Height); g.DrawImage(bm2, 0, bm1.Height, bm2.Width, bm2.Height); bm.Save(@"{-Project.Directory-}\images\bufer\{-Variable.qim1-}"); // Новая картинка bm.Dispose(); bm1.Dispose(); bm2.Dispose();
string img1 = @"{-Variable.photo-}"; // Картинка раз
string img2 = @"D:\ЧЕКЛИСТЫ\podstavka_pin.jpg"; // Картинка два
Bitmap bm1 = new Bitmap(img1, true);
Bitmap bm2 = new Bitmap(img2, true);
int width = bm1.Width;
int height = bm1.Height + bm2.Height;
Bitmap bm = new Bitmap(width, height);
Graphics g = Graphics.FromImage(bm);
g.DrawImage(bm1, 0, 0, bm1.Width, bm1.Height);
g.DrawImage(bm2, 0, bm1.Height, bm2.Width, bm2.Height);
bm.Save (@"C:\newImage.jpg"); // Новая картинка
bm.Dispose();
bm1.Dispose();
bm2.Dispose();
Это путь к картинке номер 1.
Решается этот вопрос следующим кодомЗдравствуйте, кто-нибудь сможет помочь с таким вопросом?
Я беру первую картинку из переменной и хочу сохранить полученную склеенную картинку по адресу той же переменной, заменив первую картинку.
Все мои попытки окончились теми или иными ошибками. Заранее благодарен.
C#:string img1 = @"{-Variable.photo-}"; // Картинка раз string img2 = @"D:\ЧЕКЛИСТЫ\podstavka_pin.jpg"; // Картинка два Bitmap bm1 = new Bitmap(img1, true); Bitmap bm2 = new Bitmap(img2, true); int width = bm1.Width; int height = bm1.Height + bm2.Height; Bitmap bm = new Bitmap(width, height); Graphics g = Graphics.FromImage(bm); g.DrawImage(bm1, 0, 0, bm1.Width, bm1.Height); g.DrawImage(bm2, 0, bm1.Height, bm2.Width, bm2.Height); bm.Save (@"C:\newImage.jpg"); // Новая картинка bm.Dispose(); bm1.Dispose(); bm2.Dispose();
string img1 = project.Variables["photo"].Value; // Картинка раз
string img2 = @"D:\ЧЕКЛИСТЫ\podstavka_pin.jpg"; // Картинка два
Bitmap bm1 = new Bitmap(img1, true);
Bitmap bm2 = new Bitmap(img2, true);
int width = bm1.Width;
int height = bm1.Height + bm2.Height;
Bitmap bm = new Bitmap(width, height);
Graphics g = Graphics.FromImage(bm);
g.DrawImage(bm1, 0, 0, bm1.Width, bm1.Height);
g.DrawImage(bm2, 0, bm1.Height, bm2.Width, bm2.Height);
bm1.Dispose();
bm2.Dispose();
bm.Save(mg1); // Новая картинка
bm.Dispose();
А подскажите, как именно это реализовать? Что-то не получается с 3-й даже картинкой все 3 соединить в одну. с двумя да, код работает.Логика-то подскажет, куда она денется, но лучше самому попробовать - это ведь совсем не сложно.
Декларируем еще по одному string и bitmap, суммируем еще одну переменную с шириной третьего битмапа с первыми двумя. Вызываем еще один раз g.DrawImage указав новые координаты для третьей картинки.
Честно говоря не знаю, можно ли использовать в вызове g.DrawImage выражения, поэтому если не получится указать координаты так, то определить еще одну переменную int чуть раньше. Вот и все. Ну разве что Dispose для третьего битмапа в конце еще вставить...
понял, спасибо. хотел просто в 1 кубик все запихнуть.я тоже помучился с тремя, а потом пошел по пути поэтапного склеивания:
1) склеиваем картинки 1 и 2;
2) склеиваем то что получилось на первом этапе с третьей картинкой.
и нервы побережете и время
C# не знаю, но по логике видимо так -
Код:string img1 = @"C:\image1.jpg"; // Картинка раз string img2 = @"C:\image2.jpg"; // Картинка два Bitmap bm1 = new Bitmap(img1, true); Bitmap bm2 = new Bitmap(img2, true); int width = bm1.Width + bm2.Width; int height = bm1.Height; Bitmap bm = new Bitmap(width, height); Graphics g = Graphics.FromImage(bm); g.DrawImage(bm1, 0, 0, bm1.Width, bm1.Height); g.DrawImage(bm2, bm1.Width, 0, bm2.Width, bm2.Height); bm.Save(@"C:\newImage.jpg"); // Новая картинка bm.Dispose(); bm1.Dispose(); bm2.Dispose();