Программное обеспечение для переплета файлов PNG - PullRequest
0 голосов
/ 15 декабря 2011

Я ищу способ сжать несколько сотен файлов PNG в один большой файл и использовать его как базу данных, например, «Получить изображение под номером X». Мне нужно, чтобы он был быстрым и занимал как можно меньше дискового пространства. До сих пор я пробовал SQLite с blob, и в итоге он занимает на 27% больше места, чем файлы PNG, которые фактически используются на диске. Он также должен быть совместим с C # и PHP.

Большое спасибо

Ответы [ 2 ]

0 голосов
/ 15 декабря 2011

Это не совсем ответ, но было слишком долго для комментария.

Во-первых, я дам вам преимущество сомнения, что у вас есть веские причины для этого, но, честно говоря,довольно сложно представить такой сценарий.«Несколько сотен» файлов PNG на самом деле не очень много.Даже в самом худшем случае вы говорите, что, пара гигабайт?Стоимость хранения копеек (несмотря на наводнения в Таиланде).

Во-вторых, используйте pngcrush .Это фактический золотой стандарт сжатия PNG.Поскольку вы говорите, что ваши изображения были конвертированы из PDF-файлов, я предполагаю, что они не оптимальны, и запуск их через pngcrush может устранить необходимость в дополнительных махинациях сжатия.

В-третьих, убедитесь, что вы храните не болеетебе нужно.Можете ли вы уменьшить размер (я имею в виду высоту / ширину пикселя) изображений или уменьшить глубину цвета?Насколько важно качество изображения?

Наконец, @JonHanna делает все правильно - размещение их всех в сжатом файле даст вам наилучшие результаты с точки зрения сжатия.Если вас не беспокоит производительность, попробуйте самые высокие настройки сжатия, но вы можете обнаружить, что это не имеет большого значения, поскольку, как он упоминает, уже сжатые PNG не будут сжимать намного больше.

И, наконец, +1, вы можете попробовать DjVu - это бесплатный стандарт, разработанный AT & T, разработанный специально для сжатия отсканированных документов (который должен очень хорошо переводиться в преобразованные PDF-файлы).Я не использовал его, но он там.

0 голосов
/ 15 декабря 2011

Если бы я действительно хотел сделать это, я бы поместил все файлы в Zip-пакет.

Я бы пошел на уровень "магазина", так как он не будет сильно сжиматься, но этобудет иметь файлы в одном файле с внутренней «файловой структурой», которую я могу использовать для отслеживания того, что означает что, и есть библиотеки для работы с пакетами Zip для PHP и .NET.

(Но на самом деле, я бы, вероятно, просто поместил их как капли в базу данных и не стал бы сильно беспокоиться об этом 27% дискового пространства, если мы не будем говорить несколько концертов здесь.

...