Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Функция ПолучитьУжатуюКартинку(Крт,УжатьДо) Экспорт
- Отступ = 0.9;
- Крт_ = Крт;
- Пока Крт_.РазмерФайла()>УжатьДо Цикл
- УжатьДо90 = Окр(УжатьДо*Отступ,0);
- КртШирина = Крт.Ширина();
- КртВысота = Крт.Высота();
- РзмКрт = Крт.РазмерФайла();
- Кф = УжатьДо/РзмКрт;
- Кф1 = Log(1.5+Кф*Кф*1.25);
- Кф0 = Кф1/4;
- Кф2 = 3*(1+Кф1)/4;
- Кф = Кф1;
- НоваяШирина = Окр(КртШирина*Кф,0);
- НоваяВысота = Окр(КртВысота*Кф,0);
- ОбрКрт = Новый ОбрабатываемаяКартинка(Крт, Истина);
- ОбрКрт.УстановитьРазмер(НоваяШирина,НоваяВысота);
- Крт_ = ОбрКрт.ПолучитьКартинку();
- Пока ((Крт_.РазмерФайла()>УжатьДо) ИЛИ (Крт_.РазмерФайла()<=УжатьДо90)) И (Кф2-Кф0>0.025) Цикл
- Если Крт_.РазмерФайла()>УжатьДо Тогда
- Кф2 = Кф1;
- Кф = (Кф1+Кф0)/2;
- Кф1 = Кф;
- ОбрКрт = Новый ОбрабатываемаяКартинка(Крт, Истина);
- НоваяШирина = Окр(КртШирина*Кф,0);
- НоваяВысота = Окр(КртВысота*Кф,0);
- ОбрКрт.УстановитьРазмер(НоваяШирина,НоваяВысота);
- Крт_ = ОбрКрт.ПолучитьКартинку();
- Иначе
- Кф0 = Кф1;
- Кф = (Кф2+Кф1)/2;
- Кф1 = Кф;
- ОбрКрт = Новый ОбрабатываемаяКартинка(Крт, Истина);
- НоваяШирина = Окр(КртШирина*Кф,0);
- НоваяВысота = Окр(КртВысота*Кф,0);
- ОбрКрт.УстановитьРазмер(НоваяШирина,НоваяВысота);
- Крт_ = ОбрКрт.ПолучитьКартинку();
- КонецЕсли;
- КонецЦикла;
- Отступ = Отступ-0.1;
- Если Отступ<0.6 Тогда
- Прервать;
- КонецЕсли;
- КонецЦикла;
- Возврат Крт_;
- КонецФункции
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement