Как получить размеры фото

JanCarlo

Client
Регистрация
04.03.2018
Сообщения
324
Благодарностей
37
Баллы
28
Добрый день!

есть список ссылок на фотки, ссылки прямые, нужно узнать точные размеры фоток (ширина и высота) в пикселях, и далее занести ширину и высоту в две переменные.

1) как сделать это Не скачивая фотку на комп
2) и как это сделать скачав фотку на комп =)

заранее спасибо
 

orka13

Client
Регистрация
07.05.2015
Сообщения
1 828
Благодарностей
1 723
Баллы
113
1) никак
2)
C#:
string path = project.Variables["Get_Otvet_n_Jpg"].Value; // Путь к файлу
Image img = Image.FromFile(path);
project.Variables["Img_Widhth"].Value = img.Width.ToString();
project.Variables["Img_Height"].Value = img.Height.ToString();

//return img.Size; // Ширина x Высота
// или
//return img.Width; // Ширина
//return img.Height; // Высота
 
  • Спасибо
Реакции: Rainsteel и doc

dr1veq

Пользователь
Регистрация
09.02.2018
Сообщения
38
Благодарностей
42
Баллы
18
Добрый день!

1) как сделать это Не скачивая фотку на комп
Можно качать, но не сохранять фотку на комп

Код:
     Image img = null; 
               string image =  project.Variables["imageUrl"].Value;    //Ссылка на картинку
                try
                {
                    WebClient wc = new WebClient();
                    byte[] bytes = wc.DownloadData(image);
                    MemoryStream ms = new MemoryStream(bytes);
                    img = System.Drawing.Image.FromStream(ms);
                    project.Variables["width"].Value = img.Width.ToString();
                    project.Variables["height"].Value = img.Height.ToString();
                  
                }
                catch
                {
                  
                }
 

Rainsteel

Client
Регистрация
08.04.2015
Сообщения
101
Благодарностей
9
Баллы
18
1) никак
2)
C#:
string path = project.Variables["Get_Otvet_n_Jpg"].Value; // Путь к файлу
Image img = Image.FromFile(path);
project.Variables["Img_Widhth"].Value = img.Width.ToString();
project.Variables["Img_Height"].Value = img.Height.ToString();

//return img.Size; // Ширина x Высота
// или
//return img.Width; // Ширина
//return img.Height; // Высота
Спасибо большое, все работает
 
Последнее редактирование:

smartwisard

Client
Регистрация
17.01.2017
Сообщения
746
Благодарностей
57
Баллы
28
Я уже привык, что в моих руках код не работает. Как именно надо написать, чтобы смотреть размер изображения?
Нужно возвращать в какую-нибудь переменную? Как это делать? А то я фигурные скобочки даже не умею поставить.
Код:
string path = project.Variables["Get_Otvet_n_Jpg"].Value; // Путь к файлу
Image img = Image.FromFile(path);
project.Variables["Img_Widhth"].Value = img.Width.ToString();
project.Variables["Img_Height"].Value = img.Height.ToString();
return img.Size; // Ширина x Высота
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 392
Благодарностей
1 952
Баллы
113
Я уже привык, что в моих руках код не работает. Как именно надо написать, чтобы смотреть размер изображения?
Нужно возвращать в какую-нибудь переменную? Как это делать? А то я фигурные скобочки даже не умею поставить.
Код:
string path = project.Variables["Get_Otvet_n_Jpg"].Value; // Путь к файлу
Image img = Image.FromFile(path);
project.Variables["Img_Widhth"].Value = img.Width.ToString();
project.Variables["Img_Height"].Value = img.Height.ToString();
return img.Size; // Ширина x Высота
а что не записывает высоту и ширину разве в твоём примере ?
 

smartwisard

Client
Регистрация
17.01.2017
Сообщения
746
Благодарностей
57
Баллы
28
Вот уже догадался создать переменные Img_Widhth и Img_Height , догадался что путь к файлу должен вести на диск С:, не Url.
Теперь сработало. Сегодня вроде уже не сломаю, а завтра опять вспоминать, как сделал. Так что подсказки ещё могут понадобиться.

Я ж не догадался поначалу переменные создать )) Я с кодом ещё не дружу ну совсем.

Код:
string path = project.Variables["PathToTheDiskC:File"].Value; // Путь к файлу
Image img = Image.FromFile(path);
project.Variables["Img_Widhth"].Value = img.Width.ToString();
project.Variables["Img_Height"].Value = img.Height.ToString();
 
Последнее редактирование:

smartwisard

Client
Регистрация
17.01.2017
Сообщения
746
Благодарностей
57
Баллы
28
Сейчас буду мучительно Img_Widhth и Img_Height перемножать, т.к. хочу сделать проверку изображение весом не больше 1 млн байт. Или их не перемножают. Блин, не знаю ((

А как, собственно, проверить, чтобы размеры изображений были не больше 1 млн байт?
Изображения я уже собрал себе на комп.
Img_Size или ширину с длиной найду, шаблончик, перебирающий все мои изображения сделать сделаю, но как отсеивать изображения больше 1 млн байт — не пойму толком.

Ушёл гуглить запрос "размер и вес изображения".
 

kagorec

Client
Регистрация
24.08.2013
Сообщения
631
Благодарностей
295
Баллы
63
Можно качать, но не сохранять фотку на комп

Код:
     Image img = null;
               string image =  project.Variables["imageUrl"].Value;    //Ссылка на картинку
                try
                {
                    WebClient wc = new WebClient();
                    byte[] bytes = wc.DownloadData(image);
                    MemoryStream ms = new MemoryStream(bytes);
                    img = System.Drawing.Image.FromStream(ms);
                    project.Variables["width"].Value = img.Width.ToString();
                    project.Variables["height"].Value = img.Height.ToString();
              
                }
                catch
                {
              
                }
Не работает, видимо что-то не хватает.
C#:
Компиляция кода  Ошибка в действии "CS0246" "The type or namespace name 'WebClient' could not be found (are you missing a using directive or an assembly reference?)". [Строка: 4; Cтолбец: 40]
upd:

Нужно было Директива using добавить код:
C#:
using System.Web;
using System.Net;
 
Последнее редактирование:

ankur

Client
Регистрация
19.05.2012
Сообщения
78
Благодарностей
35
Баллы
18
Не работает, видимо не хватает dll, подскажите пожалуйста
C#:
Компиляция кода  Ошибка в действии "CS0246" "The type or namespace name 'WebClient' could not be found (are you missing a using directive or an assembly reference?)". [Строка: 4; Cтолбец: 40]
using System.Net;
 
  • Спасибо
Реакции: kagorec

BAZAg

Client
Регистрация
08.11.2015
Сообщения
783
Благодарностей
995
Баллы
93
Не работает, видимо не хватает dll, подскажите пожалуйста
66446

Скачивание картинки без сохранения в файл и вывод ширины/высоты в лог:
string url = @"https://zennolab.com/discussion/data/avatars/m/11/11375.jpg?1446968218"; // путь к картинке
string proxy = ""; // прокси
string[] headers = new[]{string.Empty};
byte[] imgbytes = ZennoPoster.HTTP.RequestBytes(
    method:ZennoLab.InterfacesLibrary.Enums.Http.HttpMethod.GET,
    url:url,
    content:"",
    contentPostingType:"",
    proxy:proxy,
    AdditionalHeaders: headers,
    cookieContainer: project.Profile.CookieContainer); // скачиваем в массив байт

int width = -1; // переменная для хранения ширины
int height = -1; // переменная для хранения высоты
using (MemoryStream ms = new MemoryStream(imgbytes)){ // забрасываем массив байт в поток
    Image img = Image.FromStream(ms); // Создаем картинку с потока
    width = img.Width; // Определяем ширину картинки
    height = img.Height; // определяем высоту картинки
}

project.SendInfoToLog(string.Format(@"width={0} heidht={0}",width, height)); // выводим в лог результат
 
  • Спасибо
Реакции: kagorec

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