|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
22.03.2009, 16:46 | #1 |
Пользователь
Регистрация: 22.03.2009
Сообщений: 25
|
Качественное изменение размера изображения...
В общем, мне необходимо открыть изображение, и, если его ширина больше XXX, то уменьшить его пропорционально до YYY, при этом мелкие элементы не должны сливаться, как это получается в ДАННОЙ теме, ну и сохранить готовое изображение...
Входные форматы: PNG, GIF, JPG... З.Ы. Заранее спасибо! |
22.03.2009, 17:02 | #2 |
Android Developer
Старожил Подтвердите свой е-майл
Регистрация: 19.02.2007
Сообщений: 3,708
|
А где тут вопрос, я что-то не заметил. Вы сначала попробуйте задать вопрос, а то звучит так как будто вот задание сделайте, а я вам Спасибо дам.
Михалыч, вот еще человек хочет штраф По "вопросу": w1 - ширина файла h1 - высота файла w2 - максимальная ширина h2 - максимальная высота Код:
w1 * k - ширина h1 * k - высота В чем проблема ? Как нарисовать чтоли без потерь ? Тогда GDI+ и там используйте интерполяцию к примеру самая лучшая эта - высококачественная билинейная интерполяция. Последний раз редактировалось BOBAH13; 22.03.2009 в 17:06. |
22.03.2009, 17:05 | #3 |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
Нет, он не штраф хочет...
Он хочет уменьшить картинку до размера одного пикселя и чтобы при этом не потерялись мелкие детали изображения... |
22.03.2009, 17:05 | #4 |
Пользователь
Регистрация: 22.03.2009
Сообщений: 25
|
Хорошо, вот вопрос:
Как открыть изображение, и, если его ширина больше XXX, то уменьшить его пропорционально до YYY, при этом мелкие элементы не должны сливаться, как это получается в ДАННОЙ теме, ну и сохранить готовое изображение? Входные форматы: PNG, GIF, JPG... Не в один пиксель - читаем внимательно вопрос.... |
22.03.2009, 17:37 | #5 |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
Создавайте свой собственный критерий "похожести" смежных пикселей, сканируйте картинку построчно, анализируйте смежные пиксели в строке и в смежных строках и принимайте решение - объединять их или нет.
Вопрос изначально бредовый. Пусть на изображении изначально имеется красный квадрат 3х3 пикселя и картинку нужно уменьшить в два раза. В уменьшенном изображении возможны только 2 варианта: 1х1 или 2х2, но никак не 1,5х1,5... Изучите алгоритм JPEG-преобразования - там такие вопросы решаются замещающими цветами, могущими создать соответствующую иллюзию. Но это влечет за собой искажения. Так что на готовый алгоритм или кусок кода не рассчитывайте - придется использовать свое серое вещество... |
15.07.2009, 17:22 | #6 |
Новичок
Джуниор
Регистрация: 15.07.2009
Сообщений: 1
|
Сглаженно изменить размер картинки
Можно воспользоваться библиотекой GDI+!
У себя цепляем модуль - GDIPOBJ uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls, ExtCtrls, ToolWin, StdCtrls, GDIPOBJ; Пишем функцию: procedure LoadAAImageFromFile(FileName: String; W,H: Integer; Pic: TBitmap); var ImageTemp: TGPImage; graphicsGDIPlus: TGPGraphics; begin if FileExists(FileName) then begin Pic.Width:=W; Pic.Height:=H; graphicsGDIPlus:=TGPGraphics.Create (Pic.Canvas.Handle); ImageTemp:=TGPImage.Create(FileName ); graphicsGDIPlus.DrawImage(ImageTemp , 0,0,W,H); ImageTemp.Free; graphicsGDIPlus.Free; end; end; FileName - имя загружаемого файла, может быть в форматах: bmp, gif, jpg, png или tif. W и H - размеры результирующей картинки Pic - выходная картинка (далее ее можно сохранить в файл, например bmp) |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Изменение размера окна | Anfall | Общие вопросы Delphi | 5 | 14.03.2009 10:06 |
Вопрос по C++ Builder (изменение размера StringGrid) | Sad_SmiliK | Помощь студентам | 2 | 11.03.2009 18:20 |
Изменение размера шрифта | Nando | Microsoft Office Excel | 4 | 07.03.2009 16:45 |
Изменение размера картинки | Борис Низов | PHP | 6 | 09.12.2007 16:26 |
Изменение размера изображения, Crop image to fit height & width | loopy-need | Общие вопросы Delphi | 4 | 23.11.2006 10:23 |