Pull to refresh

Comments 39

Как дополнение, было бы интересно узнать, можно ли всё-таки заставить Word сохранять эти изображения в другом формате без такого шаманства.
Если не ошибаюсь, то при вставке через меню картинка вставляется именно в том формате, каком её подсунули. Кстати, достаю я обычно картинки из ворда сохраняя документ в виде html страницы.
Не забывайте только перекрывающиеся картинки отделять друг от друга. В противном случае получите об'единённую картинку, а не оригиналы.
Word хранит картинки ровно в том формате, в котором вы их туда засунули. Даже если пересохранять *.doc в *.docx. Подтверждено многолетним опытом и сегодняшними (для полной уверенности) экспериментами.
А есть особенность поведения при вставке из буфера обмена? Попробовал, 2 раза png получалось. Всегда ли так?
Выделить файл изображения, Ctrl+C, перейти в документ, Ctrl+V. Формат сохраняется оригинальный. Word 2010.
Про файл-то понятно. Вопрос именно про графику из буфера обмена.
Покопался немного с буфером. Насколько я понял, графика в буфер отправляется в формате Windows Clipboard Image (*.clp). Соответственно информация о первоначальном формате теряется и программа-получатель вправе самостоятельно решать, в какой из общеупотребительных форматов эту графику конвертировать при вставке.
Это я понимаю. Вопрос другой был:
>А есть особенность поведения при вставке из буфера обмена? Попробовал, 2 раза png получалось. Всегда ли так?
Т.е. что именно Word решает? Всегда ли png будет?
Исходя из всего вышеизложенного, я считаю, что да, при вставке из буфера всегда будет *.png. Только с одной поправкой. Т.к. это все наверняка недокументировано, то от версии к версии формат может меняться.
*.clp — не формат изображения, а формат-контейнер содержимого буфера обмена. Данные в нём хранятся в виде множества записей вида {тип данных, название типа данных, данные как набор байтов}. Никаких специальных возможностей для хранения именно графики на уровне формата не предусмотрено.

Формат, в котором графическое изображение (и вообще, любые данные) будет помещено в буфер всецело зависит от программы, которая туда эти данные помещает.

Данные об исходном формате файла-источника данных в общем случае теряются при копировании.

Есть энное количество стандартных форматов данных: текст в unicode и OEM (однобайтной) кодировках, растровое изображение (bitmap), векторное изображение (EMF) и несметное количество форматов, специфичных для конкретных программ.

Многие программы помещают данные в буфер сразу в нескольких форматах и вот из них-то, как правило, и идёт выбор при вставке.

Корректно написанная программа старается взять данные из буфера обмена в формате с максимально богатыми возможностями из числа поддерживаемых.

Здесь и кроется причина, по которой в файле из топика изображения хранились в EMF, а не в виде растровых изображений: Acrobat Reader при копировании помещает изображение в буфер обмена и в виде Bitmap и в виде EMF. А так как векторный формат богаче по возможностям, то его-то и выбирает при вставке MS Word.

P.S. В MS Word, насколько я помню, можно явно выбрать желаемый формат из числа доступных вставляя данные комбинацией клавиш Ctrl-Alt-V вместо Ctrl-V.
Проверил, что выдаёт акробат с помощью EnumClipboardFormats():
CF_DIB (8)
CF_BITMAP (2)
CF_MAX (17) — не совсем понимаю, что это, но, похоже, граница системных форматов
CF_ENHMETAFILE (14)
CF_METAFILEPICT (3)
Некий формат с описание «ASEL» (50178), похоже, внутренний адобовский.

Система сама выполняет преобразование CF_DIB <-> CF_BITMAP и CF_ENHMETAFILE <-> CF_METAFILEPICT

Word предлагает три формата на выбор: Bitmat («Точечный рисунок»), DIB («Аппаратно-независимый рисунок») и EMF («Метафайл Windows»). DIB и Bitmap хранятся в PNG, а EMF — в EMF, разумеется. При одинаковом сжатом размере (т.е. docx-файла в данном случае) EMF внутри куда больше — и вставляется дольше.
CF_MAX (17) — не совсем понимаю, что это, но, похоже, граница системных форматов
Судя по MSDN код 17 соответствует разновидности растрового изображения.
И точно. Я, видимо, в устаревший winuser.h посмотрел.
Пока не появился формат docx, я вытаскивал картинки из doc через «Сохранить как...» в формате html (в этом случае все картинки в исходном формате сохранялись в отдельный подкаталог).
Ага. Но таким способом сам док-файл не уменьшить…
Уменьшить ширину векторного изображения? Это как?

Может IrfanView снижает детализацию?
По сути изображение растровое.
Вектора бы столько не весили.
Файнридер по меньшей мере поставит везде f вместо ſ (это старинное альтернативное начертание s). Ну и все прочие прелести распознавания источника конца восемнадцатого века.
5 минут режим обучения, и он помнит и буквы и язык и правила
но работать и читать векторный текст, и не зависеть от качества исходника.
оно того стоит
Если мне не изменяет память, в Word есть функция подготовить документ для веб. В которой вы указываете до какого разрешения ужать графику. Пользовался ей давно, еще в 2003, так что в версиях с лентой, похоже придется поискать.
Не поленился, нашел: Кликаем на изображение: Работа с рисунками → Формат → Сжать рисунки.
96 ppi это разрешение экрана — т.е. достаточное для отображения на экране.
Причем любое приложение из пакета МС Оффис старше 2007 поддерживает данную функцию — Image-> Compress-> 96dpi.
И да, оффис сжимает по умолчанию данные в своих контейнерхах(docx, xlsx, pptx, пр), но сохраняет изображение в том формате, в котором они были туда вставлены.
Пробовал неоднократно — не помогло.
На учёбе был любопытный случай. Дали учебные пособия, которые видимо такие же студенты набирали. Внутри пособий множество принципиальных схем чёрным цветом на белом фоне. Одно из пособий весило около 24 мегабайт в doc. Поскольку я тогда ещё пользовался OpenOffice.org я просто попробовал пересохранить документ в odt. Каково же было моё удивление, когда документ похудел до 600 килобайт. Вроде бы там картинки были в BMP.
bmp на ура архивируется)
Собственно я хотел показать, что формат хранения документа может очень повлиять на его размер. В моём случае сохрание в odt означало упаковку всего документа в zip-архив. Нечто похожее произойдёт при сохранении в docx. НО! Незабываем, что можно ещё было сохранить изображение в более оптимальном формате (bmp явно самый неотптимальный вариант для чёрно-белого изображения о очень предсказуемой структурой, напоминаю, у меня там были в основном принципиальные схемы, которые состоялии из линий и окружностей), тогда бы и в doc документ получился заметно меньше.
Если это именно чёрно-белое (не градации серого), то скорее всего меньше bmp никто не сделает. Чёрно-белый bmp одним байтом 8 пикселей покрывает.
Я что-то глубоко сомневаюсь, что при всей чёрно-белости рисунка использовался бит на пиксель. Скорее какой-то «стандартный» формат от 8 до 24 бит на пиксель.
Вот первое попавшееся описание bmp.
Number of bits per pixel – Может принимать следующие значения: 1 (черно-белое изображение); 4 (16 цветов); 8 (256 цветов); 24 (16.7 миллиона цветов).
Не факт, конечно, что word внутри себя придержится этого формата, но в принципе ничто не мешает ему.
bmp в любом случае формат без сжатия. Он вам что белый лист 2000 на 2000 в 4 mb сделает. Что полноценную графику. Вы его c png путаете
сам по себе bmp больщой, но если там нет полутонов, то он должен хорощо сжиматся архиватором. А docx или odt это же zip архивы.
Ну, вообще сохранение в OpenOffice или в docx — это неплохой способ достать оригиналы изображений из файла. По крайней мере в том качестве, как они туда были вставлены.
Оно же (по крайней мере OpenOffice) — неплохой способ разглядеть формулы в защищённом экселевском файле.
Проще сохранить в html, о чём я писал выше :) И сделать это можно даже в самом Word 2003.
А вот не всегда!
В своё время работал в газете — и порой приносили ворды со вставленными tiff-ами.
Да, его можно сохранить в html — но и tiff при этом автоматом превратится в jpeg.
А цель была — достать оригинал, как из некоего «архива».
Sign up to leave a comment.

Articles