Автор |
Сообщение |
AlexRock Гуру |
|
Т. е. чтобы, например, любая сторона была не более стольки-то точек. Т. е. целевой параметр выходных файлов должен быть - разрешение.
Вообще, лучше бы можно было выбирать целевой выходной параметр из множества - размер файлов, разрешение изображений и т. п. Пробовал FastStone и XnView - там такого нет.
Если кому интересно, то это нужно вот для чего. Я на компонент PictureBox (.NET Framework Compact) кидаю картинку, а у меня исключение OutOfMemory возникает - это потому, что даже если картинка в каком-нибудь джипеге или ПНГ хранится в файловой системе, то при выводе на экран она всё равно переводится в растр и каждый пиксель начинает занимать 2-4 байта. Т. е. если однотонная картинка 2000х2000 пикселей в ПНГ будет весить считанные килобайты, то при выводе в растр она будет весить десятки мегабайт, из-за чего моё приложение вылетает с такой вот ошибкой. Поэтому срочно надо подогнать все картинки под разрешение "меньше либо равно такому-то по каждому линейному размеру изображения".
Просекаете, да? |
|
|
|
|
ДобрыйФей Мечтатель Предупреждений : 5
|
|
Зачем переводится в растр? |
|
|
|
|
AlexRock Гуру |
|
ДобрыйФей писал(а): |
Зачем переводится в растр? |
Потому что на экран выводится именно растр - такова природа Вселенной таковы особенности вывода изображений на экраны. А ещё конкретнее если быть, то перед тем, как присвоить свойству имидж пикчербокса картинку какую-нибудь, то её надо в битмэп перевести, а эта штука именно растр, грубо говоря. Ну, или BMP в виндоус-терминологии, опять же грубо говоря. Если бы не надо было выводить на экран, то я бы в MemoryStream'ах хранил бы их - меньше бы места занимали (сколько на диске весит джипешка или там ПНГшка, столько бы и занимали), но т. к. надо вывести на экран, то памяти отъедается столько, сколько надо для создания растрового изображения для всей картинки.
Я знаю, что хитрые программисты из разных картософтостроительных и картинкопросмотровочнософтостроительных учреждений умеют как-то так рендерить здоровые изображения, чтобы в памяти была только область, непосредственно в данный момент на экране находящаяся. Но мне до этого далеко, да и даже после получаса поисков я не нашёл в Интернете готовых алгоритмов, которые бы не сильно сложно позволили бы мне встроить такую возможность в мою программу. Наверное, это всё же ноу-хау - не так-то просто разработать свои графический формат и логику для быстрого рендеринга больших растровых изображений при ограничениях памяти и ресурсов процессора. Да и сроки поджимают, поэтому мы идём ленивым лёгким путём. |
|
|
|
|
ДобрыйФей Мечтатель Предупреждений : 5
|
|
AlexRock писал(а): |
Потому что на экран выводится именно растр |
А как работают все просмотрщики?
|
|
|
|
|
AlexRock Гуру |
|
ДобрыйФей
Я не знаю, как они работают на мобильных устройствах, а тот же графический редактор, будь то ПейнтДотНЕТ или Фотошоп, грузит в память картинку именно в растре, поэтому столько и отъедает памяти при редактировании больших изображений. Я не говорю уже о том, когда интенсивно используются слои и всякие фильтры, для работы которых нужно хранить несколько вариантов растров одной и той же картинки.
Как-то так.
ЗЫ. Слушай, это только мои фантазии - лучше у Википедии спроси. ) |
|
|
|
|
ДобрыйФей Мечтатель Предупреждений : 5
|
|
Не, я не про редакторы говорил, а именно про просмотрщики - ФастСтоуны, Ирфаны и т.д.
А в Википедии вряд ли такое написано. |
|
|
|
|
JASJAS Гуру |
|
В смысле в FastStone нет?
А этот пункт чем не годится - Инструменты-Пакетное преобразование-ну и далее расширенные настройки конвертации.
Сейчас конвертнул пакетом десяток больших и разного разрешения фоток в размер по одной стороне 600 pix. Всё работает. |
|
|
|
|
AlexRock Гуру |
|
JASJAS
Спасибо. Это уже получше, но немного не то. Вот, посмотрите:
Мне-то надо, чтобы если картинка не больше указанного размера по бОльшей своей стороне, ТО ОСТАВИТЬ ЕЁ В ПОКОЕ. А ФастСтоун ВСЕ картинки подогнал под указанный размер (меньшие увеличил, а бОльшие уменьшил). Я, конечно, могу и руками отсортировать нужные мне и конверитировать только их, но хотелось бы не совершать лишних телодвижений.
Или, если ФастСтоун это таки может, подскажите, пожалуйста, настройки для этого. |
|
|
|
|
ProFfeSsoRr Гуру |
|
AlexRock Ээ, фарстона под рукой нет, но точно помню там галочку для пропуска, если картинка меньше. |
|
|
|
|
Natol Продвинутый форумчанин |
|
Попробуй Batch Picture Resizer. |
|
|
|
|
JASJAS Гуру |
|
Наверно, здесь..
|
|
|
|
|
SpeedWay Озверевший Гонщик Предупреждений : 6
|
|
|
|
|
AlexRock Гуру |
|
JASJAS
Да, это то, что нужно. Я просто не ту опцию использовал.
Всем спасибо. |
|
|
|
|
ДобрыйФей Мечтатель Предупреждений : 5
|
|
Теперь я уверен, что ты делаешь это специально.
|
|
|
|
|
AlexRock Гуру |
|
Просто иногда в запарке не помнишь толком, что у тебя под рукой есть. |
|
|
|
|
Zippy Гуру |
|
FastStone Photo Resizer тоже хорошая прога, кстати. |
|
|
|
|
CyberHunter Гуру |
|
IrfanView, в очередной раз
|
|
|
|
|
Evgeny79 Гуру |
|
Экшен в фотошопе. Если программишь то легко можно картинки рассортировать которые меньше в одну папочку, которые надо пожать в другую. Потом на нее науськиваешь экшен фотошопа.
Более долгий путь конечно, чем уже готовая прога, но не думаю что было бы дольше пока тебе тут ее посоветовали. |
|
|
|
|
ДобрыйФей Мечтатель Предупреждений : 5
|
|
CyberHunter
В Ирфане, кстати, нормальная обрезка есть? |
|
|
|
|
CyberHunter Гуру |
|
ДобрыйФей
Что значит нормальная? в батче есть обрезка, на сколько видишь по приведённому скриншоту, но я пользуюсь только чтобы вырезать кусок из открытой картинки, обвёл - вырезал. |
|
|
|
|
|