Изменение размера картинки

APXOHT

Client
Регистрация
27.12.2013
Сообщения
879
Благодарностей
189
Баллы
43
Доброго!
Тяну на комп картинки с последующим перезалитием на сторонний сервайс где нельзя указать высоту и ширину изображения.
Подскажите пож-та может можно менять уже на компе с помощью Зены размер изображения на одинаковый (300\240 или типа того)
Спасибо.
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 707
Баллы
113
В самом постере таких функций нет.
Гуглите в сторону библиотек, которые помогут менять в коде изображения. ImageMagic Например
 

APXOHT

Client
Регистрация
27.12.2013
Сообщения
879
Благодарностей
189
Баллы
43
Решилось примерно так
C#
Код:
  //путь к оригинальной картинке
  string originalPicPath = @"D:\pics\pic.jpg";
  //имя файла под которым сохранять
  string newImageName = "mypic.jpg";
  //папку куда сохранять
  string saveDir = @"C:\images\";
  //новая ширина
  int newWidth = 300;
  //нова высота
  int newHeight = 240;
  if(!System.IO.Directory.Exists(saveDir))
  System.IO.Directory.CreateDirectory(saveDir);
  //загружаем картинку
  System.Drawing.Image image = System.Drawing.Image.FromFile(originalPicPath);
  //создаем с пережимкой
  System.Drawing.Image resized = image.GetThumbnailImage(newWidth, newHeight, null, System.IntPtr.Zero);
  //сохраняем новую картинку
  resized.Save(saveDir+newImageName);
  //чистим за собой
  image.Dispose();
  resized.Dispose();
 
  • Спасибо
Реакции: eee и p0s1t1ve

APXOHT

Client
Регистрация
27.12.2013
Сообщения
879
Благодарностей
189
Баллы
43
Не все так просто оказалось :(
Помогите пож-та всунуть сюда переменные
путь к первой картинке C:/{-Variable.url-}.jpg
путь к переделанной картинке C:/2/{-Variable.url-}.jpg
имя картинки {-Variable.url-}.jpg
Спасибо!
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 707
Баллы
113
project.Variables["Имяпеременной"].Value вместо {-Variable.Имяпеременной-}
 
  • Спасибо
Реакции: mr.Che, p0s1t1ve и APXOHT

p0s1t1ve

Client
Регистрация
16.03.2015
Сообщения
15
Благодарностей
0
Баллы
1
Спасибо, а если высота и ширина тоже являются переменными?
Через project.Variables["Имяпеременной"].Value пробовал - ругается, что приходится сравнивать string с int.
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 707
Баллы
113
Convert.ToInt32(project.Variables["Имяпеременной"].Value)
 
  • Спасибо
Реакции: mr.Che и p0s1t1ve

Greez

Client
Регистрация
05.02.2014
Сообщения
82
Благодарностей
29
Баллы
18
Есть способ узнавать размеры картинок до ресайза?
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 106
Баллы
113
Есть способ узнавать размеры картинок до ресайза?
В одну переменную (ШxВ):
Код:
Image file = Image.FromFile(@"C:\image.jpg"); // Путь к картинке
return file.Width.ToString() + "x" + file.Height.ToString();
В разные переменные:
Код:
Image file = Image.FromFile(@"C:\image.jpg"); // Путь к картинке
project.Variables["Width"].Value = file.Width.ToString();
project.Variables["Height"].Value = file.Height.ToString();
 

Mitasu

Client
Регистрация
13.10.2016
Сообщения
3
Благодарностей
0
Баллы
1
доброго времени суток.
Нужно взять размер фото с жесткого диска
Пробую этим
  1. Image file = Image.FromFile(@"C:\image.jpg"); // Путь к картинке
  2. return file.Width.ToString() + "x" + file.Height.ToString();
Пока путь прописан без переменной - все работает,как только прописываю переменную - нефурычит.

var f = project.Variables["Photo"].Value;
Image file = Image.FromFile(@"f"); // Путь к картинке
return file.Width.ToString() + "x" + file.Height.ToString();

Не понимаю... помогите плз.
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 106
Баллы
113

Mitasu

Client
Регистрация
13.10.2016
Сообщения
3
Благодарностей
0
Баллы
1
Ггг)) спасибос) работает)
 

Nord

Client
Регистрация
22.03.2012
Сообщения
2 375
Благодарностей
1 436
Баллы
113
В разные переменные:
Код:
Image file = Image.FromFile(@"C:\image.jpg"); // Путь к картинке
project.Variables["Width"].Value = file.Width.ToString();
project.Variables["Height"].Value = file.Height.ToString();
Делаю ресайз, с сохранением пропорций
Как перед сохранением узнать вторую сторону, чтоб сохранить под именем, скажем, 350х200.jpg ( 200 - искомое, можно получить перед сохранением, или только переименование потом?)

Код:
Func<System.Drawing.Image, int, int, System.Drawing.Image> imgReduse = (System.Drawing.Image _img, int _width, int _height) => {
var _rx = (double)_img.Width/_width;
var _ry = (double)_img.Height/_height;
var _ratio = Math.Min(_rx, _ry);
var _newW = (int)(_img.Width/_ratio);
var _newH = (int)(_img.Height/_ratio);
return new System.Drawing.Bitmap(_img, _newW, _newH);
};
string imagePath = project.Variables["Pic"].Value;

//Ебеним изображение 350*0, 0 - чтоб высота была фиксированная, в ширину уже подганяло
System.Drawing.Image tempimg = System.Drawing.Image.FromFile(imagePath);
System.Drawing.Image img = imgReduse(tempimg, 350, 0 );

// Сохраняем
img.Save(project.Directory + @"\" + project.Variables["Image_Name"].Value + "-350x0.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
tempimg.Dispose();
img.Dispose();


//Image img_s = Image.FromFile(img);
//return img_s.Height; // Ширина x Высота
 
  • Спасибо
Реакции: Maximus23

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)