сегодня пол дня возился с картинками (увеличение по клику)
Дано: картинка jpg Диагноз: вставляется на лист Excel в уменьшенном виде (картинки 111 и 222 вставляются неправильно. 333 для примера - вставляется правильно) Лечение: удалить Exif из 111 и 222
не помогает: пересохранение в фотошопе в jpg пересохранение в фотошопе в png кадрирование (обрезка) с пересохранением ACDSee кадрирование (обрезка) с пересохранением в фотошопе помогает: PrintScreen картинки в натуральную величину, вставка в любой редактор, сохранение смена формата jpg -> png ACDSee удаление Exif данных (например с помощью ShowExif)
Архив с листом Excel и картинками (300 кб) http://rghost.ru/56491755 что самое интересное - эти картинки с неправильными Exif даже умудряются выбивать Excel в аут при точном подборе размеров на куске кода: (код с сайта http://excelvba.ru/code/PastePictures)
т.е. обычная картинка нормально проезжает по коду, а картинки 111 и 222 его зависают (там цикл не завершается) это можно посмотреть в файле Книга1_.xlsm по кнопкам "НЕ зависает" и "зависает"
основную проблему, которая была по поводу этих картинок можно посмотреть по кнопке "test"
Сразу подозревал, что проблема в разрешении картинок. у 111 и 222 оно 300dpi, у 111 без Exif - 96, а у 333 - сразу 96. Экранное разрешение по умолчанию - 96. Поэтому Эксель и сжимает 111 и 222: у них размер в дюймах прописан в Exif. Чтобы именно с этими картинками исправить уменьшение сделайте такую строчку
Причем изменять надо только 1 измерение. Иначе растянет в 2 раза. А вот как передать разрешение картинки в эксель - не знаю
Уберите маркеры изменения размеров ячейки в процедуре ПримерВставки... - перестанет зависать, так как не может подобрать высоту строки ровно под размер картинки, потому и циклит Ну либо заранее меняйте разрешение картинки на 96
можно каким-то vba кодом удалить данные Exif? нашел только темы, где советуют скачать cls файл для чтения Exif
может в References есть модуль для удаления вообще всех exif данных? ведь без предварительного удаления exif практически невозможно работать с вставкой картинок в файл.
Доброе время суток KUDRIN, можно модифицировать код от David Crowell под себя для записи "правильного" разрешения (в исходном только читает). Или воспользоваться библиотекой Tools/References - Microsoft Windows Image Acquisition Library 2.0 (но предустановлена ли с вашей версией Windows и разрядностью офиса не знаю). Успехов!
как вариант еще можно перед вставкой сохранять в файл и читать из него правильное разрешение потому что напрямую вставлять практически невозможно у картинок в 100 пикселей размеры .width прыгают от 10 пикселей до 10000. в таком случае даже масштабирование не помогает, погрешность до 30%
Если воспользоваться готовым решением для вставки картинок http://excelvba.ru/programmes/PastePictures со включенной опцией сжатия, - EXIF и прочая ерунда будет удалена автоматически