| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Звук, графика и видео > Graphics32 Thumbnails |
| Автор: Akella 31.8.2011, 00:04 | ||||
| Привет, а Великий All! Вопрос по библиотеке Graphics32. Как там можно создавать миниатюрные копии изображений (jpg, bmp, png)? Ни в примерах, ни в справке не могу найти. Хотел сам попытаться
но.....
|
| Автор: 14SatanA88 31.8.2011, 08:10 | ||||
могу посоветовать использовать ресайз (либа Vampyre Imaging Library)
и использовать такого рода функцию
или устраивает только Graphics32? |
| Автор: Alexeis 31.8.2011, 10:40 | ||
В общем сам он не имеет отношения к загрузке и сохранению файлов и использует стандартные классы или те что зарегистрированы в делфи. Собственно uses jpeg и должно грузить. |
| Автор: Akella 31.8.2011, 16:06 | ||
| А как уменьшить пропорционально? Добавлено через 56 секунд Есть SetSize(NewWidth, NewHeight), но это не совсем то. Добавлено через 2 минуты и 36 секунд
В выходном файле только чёрный квадрат. Добавлено через 4 минуты и 18 секунд 14SatanA88, в твоём коде тоже нужно указывать конкретные значения ширины и высоты, а значит это не пропорциональное изменение размера. |
| Автор: 14SatanA88 1.9.2011, 08:05 |
ну да. я использовал математику. нужные значения подсчитать несложно. |
| Автор: ~FoX~ 1.9.2011, 08:58 | ||
|
| Автор: Akella 1.9.2011, 11:14 | ||||||
| Я использовал для подсчёт отношения округление Round. Так более просто и мне понятнее. Не понимаю, зачем такие сложности? На примере JPG
На примере BMP
На примере PNG
Добавлено @ 11:17 Вы мне скажите, как мне GR32 победить? Почему на выходе квадрат Малевича? Мне нужно создавать эскизы фотографий на лету, перед загрузкой в таблицу, т.к. в таблицу я загружаю эскизы. Или StretchBlt достаточно шустрая процедура? |
| Автор: ~FoX~ 4.9.2011, 10:47 | ||
Покажи весь код, т.к. в приведенном все в порядке... |
| Автор: Akella 4.9.2011, 17:36 |
| Я же дал код. См выше. http://forum.vingrad.ru/index.php?showtopic=337163&view=findpost&p=2395906 |
| Автор: Alexx82 7.9.2011, 08:05 | ||||
Может быть потому что ты классу (TBitmap) предназнченному для работы с файлами .bmp пытаешься подсунуть .jpg файл |
| Автор: Akella 7.9.2011, 09:26 |
| Не знаю, может быть. Я забросил GR32. |
| Автор: sg729 20.4.2012, 20:14 | ||||||||||
В FAQ есть намек на решение этой задачи. Смысл в том, что нужно создавать дополнительный объект TBitmap32 и на нем отрисовывать картинку из исходного TBitmap32 : http://graphics32.org/wiki/FAQ/Resampling
Примерно вот так можно отресайзить :
Здесь w, h - размеры которые надо получить. Конечно, желательно еще добавить try ... except как полагается. Способ ресамплинга задается тоже по чудному, примерно так:
при этом никакого KernelResampler.Free вроде бы не нужно. |
| Автор: Akella 20.4.2012, 22:28 |
| спасибо а главное вовремя Добавлено через 37 секунд сидел перед монитором, ждал, пока ответят |
| Автор: sg729 21.4.2012, 10:50 | ||
Ну что поделать Только вчера увидел эту тему, да и сам занялся graphics32 с неделю тому назад... а с "черным квадратом Малевича" применительно к graphics32 судя по яндексу сталкивались многие. Пусть уж лучше будет здесь упоминание об этом, может облегчит кому-нибудь мучения |
| Автор: goa_dreamer 3.5.2012, 10:39 | ||
| (Для модераторов, можете перенести данное сообщение в соотствующую тему если нужно). Задача: качественно изменить размер картинки с сохранением полутонов. После поиска данного решения, пересмотра вариантов функций сторонних разработчиков, решил проверить, а что же имеет в основе Delphi TImage, модуль Graphics.pas:
По-сути все задача с качественным изменением картинки заключается в задании условия DoHalftone, если вы вручную выставите DoHalftone := True, тогда SetStretchBltMode(ACanvas.FHandle, HALFTONE) - будет постоянным. Чтобы увидеть разницу с использованием стандартного изменения картинки, вы можете изменить SetStretchBltMode(ACanvas.Handle, STRETCH_DELETESCANS) на SetStretchBltMode(ACanvas.Handle, STRETCH_ORSCANS), или на любую StrechMode-переменную из документации функции SetStretchBltMode. |