Эскиз картинки без использования API / DLL, имея массив

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

Эскиз картинки без использования API / DLL, имея массив

Сообщение ALX_2002 » 11.11.2005 (Пт) 20:49

Челы, понимаю что звучит бредово, но мне нужно нечто следующее:

Есть двоичный массив картинки. ( Попросту содержимое файла )
Мне нужно эту картинку "сжать по X/Y" без использования API и DLL.

Сделать эскиз картинки.

Это возможно сделать практически ?
Если да, то может у кого нибудь есть исходнячок или ссылочка где об этом читануть ?
Последний раз редактировалось ALX_2002 11.11.2005 (Пт) 23:42, всего редактировалось 2 раз(а).

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 11.11.2005 (Пт) 21:14

Поясните. Что есть "сжать"? Уменьшить по линейным размерам, по объёму, по цветности?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 11.11.2005 (Пт) 22:06

Архивирование массива?..
Ручками? :)

Моно :)
Если массив не являет собой чё-нить вроде jpeg.
http://vbstreets.ru/VB/Sources/42704.aspx
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 11.11.2005 (Пт) 23:21

Виноват. Опять коряво задал вопрос. :(

Нужно сделать эскиз. ( Сжать по X, Y)

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 11.11.2005 (Пт) 23:34

Сделать можно, и принципиально несложно.

Ключевое слово - интерполяция. Просто так уменьшенная картинка будет корявой, надо ее сгладить. Статью/исходника сейчас нарыть не могу...

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 11.11.2005 (Пт) 23:38

2 Amed: Научишь ? :roll: :scratch: Я волсебное слово знаю - Позаааааалуста. :wink:

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 11.11.2005 (Пт) 23:46

Имеем поле 3х3 пикселя. Берем цвета 8 граничных, складываем, делим на 8 и получаем цвет центрального.

Имеем поле 6х6 пикселей. Повторяем вышеизложенную процедуру для каждого из угловых квадратов 3х3, получаем интерполированноеполе 2х2.

Для бóльших картинок все сложнее. Сходи на algolist.manual.ru, думаю, там есть статейка.

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 12.11.2005 (Сб) 4:17

чо сложного-то?

берем ширину большой картинки и делим на ширину маленькой (кот. должна получиться). Эта ширина, допустим, 5 пикселей; то есть на маленькой картинке 1 пикселю будут соответствовать 5 на большой. Берем каждые 5 пикселей по ширине, складываем цвет и делим на 5. Получается средний цвет для пикселя на маленькой картинке. В итоге картинка сжата по ширине. Проводим туже операцию для высоты, а еще лучше делаем все одновременно.

интересно, будет работать?...
ХЎ

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 12.11.2005 (Сб) 11:48

ALX_2002
У ImageBox есть такое свойство "Stretch".
Делаешь Stretch=True
Присваиваешь ImageBox-у какую-нибудь картинку - она масштабируется.
Может этого хватит? Или неприменно нужно из массива в памяти брать данные?

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 12.11.2005 (Сб) 18:54

2 d3drm: Ммм.... На счёт пикселей это всё класно, а как их из массива

JPG / BMP /GIF взять.... Аа... Надо слазить за описанием форматов...Уффф.... Тяжко.... Тяжко.... Буду думать.... :?

2 Mikle: СУПЕР ! Stretch рулит ! :D ! Но к сожалению я хочу сделать генератор эскизов на ASP. А в ASP к сожалению нет ни Image ни PictureBox ни чего либо ещё подобного. ( Хотя может я ошибаюсь ).

:( :( :(

+ Зарегить на серваке DLL (GDI+) я не могу, чтоб через CreateObject им пользоваться. ( Хостинг бесплатный ) Вот и изголяюсь

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 12.11.2005 (Сб) 19:06

Ресемплинг на чистом ASP - это будет такааая тема...
Может, по картинке в минуту будет ресемплить ;-)
Изображение

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 12.11.2005 (Сб) 19:23

2 tyomitch: Минуту. Хм... Норм. Пойдёт :) :roll: :idea:

[ Yep ! I am crazy man baby !]

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 12.11.2005 (Сб) 20:07

Бикубический ресемплинг (без API и без ничего) - 100% был на vbaccelerator.com
Изображение

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 12.11.2005 (Сб) 21:21

Посканил. Не нашёл :( :oops:

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 12.11.2005 (Сб) 22:24

Ну ё-моё, а как я за минуту нашёл?
http://vbaccelerator.com/home/VB/Code/v ... rticle.asp

Тебя интересует функция ResampleDib в модуле cDIBSection.cls
Изображение

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 12.11.2005 (Сб) 23:18

2 tyomitch: Недавно заинтересовался формированием запросов для поисковых систем. Понял, что написать в форуме "Посканил. Не нашёл" значительно проще. :D

( Шутка юмора ) :D

Пасиб - пойду читать :)


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 136

    TopList