|
Парсинг и обрезка картинок | ☑ | ||
---|---|---|---|---|
0
Мистикан
04.06.15
✎
05:56
|
Есть векторная рисовалка Vector.Drawning, в которой производится прорисовка развижной светопрозрачной конструкции. Компонента сохраняет рисунок в файл, который потом хранится в хранилище. Но картинка при сохранении не обрезается, а сохраняет все поле. И получается что 50-70% сохраненной картинки - это пустое поле.
Хочется обрезать эту картинку. Только не представляю, как это сделать, точнее через какую компоненту. |
|||
1
ЧеловекДуши
04.06.15
✎
06:30
|
(0) Векторным рисункам побоку на пустое пространство :)
Вот если ты Пишешь в BMP, то тогда не побоку. Ну и тут есть такая вещь, как Архивирование, перед записью. И так же Хранилище Архивирует содержимое перед записью :) |
|||
2
DJ Anthon
04.06.15
✎
07:28
|
(1) может, ему просто не нравится, как оно после этого выглядит
|
|||
3
Мистикан
04.06.15
✎
07:32
|
(2) Не нравится как это потом выходит на печать в договоре. Мелко получается, бабульки не видят xD
|
|||
4
DJ Anthon
04.06.15
✎
07:34
|
попиксельно бегаешь вокруг области и стираешь по столбцу-строке. процесс можно анимировать и вывести с какими-нибудь спецэффектами, типа развлекаловка. можно пакмана прикрутить.
|
|||
5
Мистикан
04.06.15
✎
07:38
|
(4) не это извращение. проще по-моему найти первую последнюю координату по Х и У, в которой пиксель не совпадает с цветом фона, и обрезать.
Вопрос то собственно, какой компонентой это сделать =) желательно еще методы получения цвета и обрезки к ней =) |
|||
6
Мистикан
04.06.15
✎
07:40
|
просто той компонентой которой рисую, там жестокое извращение, которое к тому же и тормозить начинает.. 10сек обработка 1 картинки. Нужна какая нить растровая компонента, желательно с пакета .Net
|
|||
7
DJ Anthon
04.06.15
✎
07:40
|
ну я это, в принципе, в виду и имел.
http://delphicomponent.ru/454-komponent-raboty-s-graficheskimi-faylami-timage.html и вперед. ты программист или где? |
|||
8
Мистикан
04.06.15
✎
07:43
|
я дельфи последний раз трогал 10 лет назад в универе =) да и то спец был не программирование, так что писали мы мало
|
|||
9
Мистикан
04.06.15
✎
07:47
|
такс.. вроде что то нашел. выложу готовое решение
ПодключитьВнешнююКомпоненту("Elisy.NetBridge4"); AddIn = New("AddIn.ElisyNetBridge4"); net = AddIn.GetNet(); net.LoadAssembly("System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"); outputBitmap = net.New("System.Drawing.Bitmap", width, height); g = net.CallStatic("System.Drawing.Graphics", "FromImage", outputBitmap); g.CompositingQuality = net.New("System.Drawing.Drawing2D.CompositingQuality").HighQuality; g.SmoothingMode = net.New("System.Drawing.Drawing2D.SmoothingMode").HighQuality; g.InterpolationMode = net.New("System.Drawing.Drawing2D.InterpolationMode").HighQualityBicubic; g.Clear(net.GetStatic("System.Drawing.Color", "WhiteSmoke")); sx = width / Bitmap.Width; sy = height / Bitmap.Height; scale = Мин(sx, sy); g.DrawImage(bitmap, Окр((outputBitmap.Width - scale * bitmap.Width) / 2, 0), Окр((outputBitmap.Height - scale * bitmap.Height) / 2, 0), Окр(scale * bitmap.Width, 0), Окр(scale * bitmap.Height, 0)); |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |