Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/15: Рейтинг темы: голосов - 15, средняя оценка - 4.53
0 / 0 / 0
Регистрация: 28.04.2013
Сообщений: 32
1

При загрузке картинки выдает ошибку

15.11.2013, 15:30. Показов 2837. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть метод, в котором загружается изображение и вырезается из него квадрат. Некоторые изображения он нормально загружает, а при загрузке некоторых выдает ошибку. В чем причина? Когда не было обработки исключений ссылалось на то, что "значение выходит за границы допустимого диапазона"
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
public void OpenFile()
        {
            Microsoft.Win32.OpenFileDialog openfiledialog1 = new Microsoft.Win32.OpenFileDialog();
            openfiledialog1.Filter = "Изображения|*.bmp;*.jpg;*.png";
            openfiledialog1.ShowDialog();
            string Src = openfiledialog1.FileName;
            if (Src == "")
            {
                Src = "./Images/1.jpg";
            }
            BitmapImage bmi = new BitmapImage(new Uri(@"" + Src, UriKind.RelativeOrAbsolute));
            int size;
            double height = bmi.Height;
            double width = bmi.Width;
            if (height > width) size = (int)width;
            else size = (int)height;
            try
            {
                CroppedBitmap newimage = new CroppedBitmap(bmi, new Int32Rect(0, 0, size, size));
                FillRectangles(newimage);
            }
            catch
            {
                MessageBox.Show("Ашибачка:(");
            }            
                                  
        }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.11.2013, 15:30
Ответы с готовыми решениями:

Недостаточно памяти при загрузке картинки
Сделал вторую форму там я вставляю в уже запущенной проге в две панели BackgroundImage после...

Выдает ошибку при загрузке медиа
Здравствуйте. Подскажите, пожалуйста, WordPress 4.9.8, все загружалось хорошо. И не могу понять,...

При загрузке комп выдаёт ошибку
при загрузке комп выдаёт ошибку Не удалось запустить Windows. Возможно, это произошло из-за...

Выдает ошибку при загрузке файла с сайта
Для загрузке использую: My.Computer.Network.DownloadFile("Сайт", "Куда загружает") Сайт на...

9
970 / 773 / 171
Регистрация: 12.04.2009
Сообщений: 1,700
15.11.2013, 16:38 2

Не по теме:

:facepalm:

catch
{
MessageBox.Show("Ашибачка:(");
}



Цитата Сообщение от Zeliboba1706 Посмотреть сообщение
Когда не было обработки исключений ссылалось на то, что "значение выходит за границы допустимого диапазона"
тут все сказано.
0
0 / 0 / 0
Регистрация: 28.04.2013
Сообщений: 32
15.11.2013, 16:51  [ТС] 3
Ну а в чем проблема то? За счет чего она за границы выходит, если я беру высоту\ширину самого изображения...
0
30 / 30 / 4
Регистрация: 04.01.2012
Сообщений: 135
18.11.2013, 12:45 4
Потому что по какой-то причине у некоторых картинок некорректно определяются высота и ширина. Вы откройте какой-нибудь редактор и посмотрите значения, а потом посмотрите значения в студии и увидите это. Студия увеличивает, из-за чего ваш size больше чем оригинальные размеры картинок.
2
0 / 0 / 0
Регистрация: 28.04.2013
Сообщений: 32
18.11.2013, 12:59  [ТС] 5
Цитата Сообщение от karpov. Посмотреть сообщение
Потому что по какой-то причине у некоторых картинок некорректно определяются высота и ширина.
Спасибо, так и есть, картинки почему-то определяются в 1,3 раза больше чем они есть. В чем может быть причина?
0
17 / 14 / 5
Регистрация: 14.11.2013
Сообщений: 65
18.11.2013, 13:07 6
Я могу и ошибаться, только с сентября учу си шарп, но...
C#
1
new Int32Rect(0, 0, size, size)
тут у нас размер, size это либо высота , либо широта, не имеет значения , это размер в пикселях, а если Вы забыли, считать надо с нуля. Может ошибок не будет так
C#
1
new Int32Rect(0, 0, size-1, size-1)
Добавлено через 3 минуты
для теста откройте фото 640Ч480 в в фотошопе и если верить координатам то размер 639Ч479
0
0 / 0 / 0
Регистрация: 28.04.2013
Сообщений: 32
18.11.2013, 13:14  [ТС] 7
Я уже пробовал писать и -100 и тд, некоторые изображения он открывает нормально(например стандартные изображения Windows), а на другие ругается. Что касается размера, то студия считает, что изображения в 1,3 раза больше, чем есть на самом деле.
0
30 / 30 / 4
Регистрация: 04.01.2012
Сообщений: 135
18.11.2013, 13:33 8
Используйте
C#
1
2
    double height = bmi.PixelHeight;
            double width = bmi.PixelWidth;
Вместо вашего
C#
1
2
double height = bmi.Height;
            double width = bmi.Width;
2
17 / 14 / 5
Регистрация: 14.11.2013
Сообщений: 65
18.11.2013, 13:33 9
Странно. А Вам это надо именно на шарпе?
0
0 / 0 / 0
Регистрация: 28.04.2013
Сообщений: 32
18.11.2013, 13:49  [ТС] 10
Цитата Сообщение от karpov. Посмотреть сообщение
Используйте
C#
1
2
    double height = bmi.PixelHeight;
            double width = bmi.PixelWidth;
Вместо вашего
C#
1
2
double height = bmi.Height;
            double width = bmi.Width;
Спасибо. Заработало
0
18.11.2013, 13:49
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.11.2013, 13:49
Помогаю со студенческими работами здесь

ПК при загрузке через плоцкарту выдает ошибку d0 и Е9
Всем привет.. У меня проблема с ПК при загрузки через плоцкарту выдает ошибку d0 и Е9, а чаще всего...

Комп перезагружается и выдает ошибку при повторной загрузке
На компе стоит Gforce GTX 560 Ti В один прекрасный момент на ней стал гудеть один из кулеров....

При загрузке файла на сервер выдает ошибку 500
Всем доброго времени суток, помогите решить проблемму, пытаюсь загрузить на сайт файл .xls через...

Windows Script Host выдаёт ошибку при загрузке системы
Недавно Касперский стал высвечивать уведомления о том, что загружен подозрительный объект...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru