Модераторы: Snowy, Alexeis, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как разрезать JPG-картинку на несколько маленьких? 
:(
    Опции темы
Данкинг
Дата 25.11.2007, 01:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: нет
Всего: 130



Собственно, сабж. Конкретного примера на форуме не нашёл...


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
MetalFan
Дата 25.11.2007, 10:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 5
Всего: 128



1. создаешь Bitmap размером с маленький кусок.
2. отрисовываешь на него нужную часть исходного jpeg
3. сохраняешь в файл
4. на 2 пока не кончаться куски)


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
Данкинг
Дата 25.11.2007, 14:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: нет
Всего: 130



Цитата(MetalFan @ 25.11.2007,  11:08)
2. отрисовываешь на него нужную часть исходного jpeg

А вот это как? К примеру, разделить на две картинки по вертикальной линии...


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
WaReZMEN
Дата 25.11.2007, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 683
Регистрация: 9.6.2006
Где: Россия, Санкт-Пет ербург

Репутация: нет
Всего: 3



Конвертиш JPG в Bitmap дальше либо CopyRect либо по пиксельно

Вот по птксельный вариант 
Код

Image2.Width:=Round(Image1.Width/2);
  Image2.Height:=Round(Image1.Height/2);
  Image3.Height:=Image2.Height;
  Image3.Width:=Image2.Width;

  For I:=0 To Image2.Width-1 Do
  For J:=0 To Image2.Height-1 Do
     Image2.Canvas.Pixels[I,J]:=Image1.Canvas.Pixels[I,J];

  For I:=0 To Image3.Width-1 Do
  For J:=0 To Image3.Height-1 Do
     Image2.Canvas.Pixels[I,J]:=Image1.Canvas.Pixels[Image3.Width+I,Image3.Height+J];
    Image1.Canvas.CopyRect();

Главное сконвертировать JPG->Bmp...
Ну а с CopyRect думаю сам разберешся.... smile 
PM MAIL ICQ   Вверх
Данкинг
Дата 25.11.2007, 17:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: нет
Всего: 130



Всем спасибо, удаляюсь пробовать. smile 


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
MetalFan
Дата 25.11.2007, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 5
Всего: 128



WaReZMEN, молодец, самый "быстрый" вариант подсказал! ага, вперед, по пикселям)

Добавлено через 22 секунды
для работы с жопегом лучше поковырять GDI+. имхо


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
Alexeis
Дата 25.11.2007, 21:30 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 55
Всего: 459



Цитата(MetalFan @  25.11.2007,  17:47 Найти цитируемый пост)
для работы с жопегом лучше поковырять GDI+. имхо 

  Некоторые преобразования GDI+ умеет производить без пересжатия  smile 


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
WaReZMEN
Дата 26.11.2007, 01:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 683
Регистрация: 9.6.2006
Где: Россия, Санкт-Пет ербург

Репутация: нет
Всего: 3



MetalFan, я ж еще сказал что можно и CopyRect... какая разница, какой я вариант написал он самый фонарный сточки зрения понимания.... К то муже о скоростном способе он и не спрашивал  smile 
PM MAIL ICQ   Вверх
zedx
Дата 29.11.2007, 20:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 63
Регистрация: 29.11.2007

Репутация: нет
Всего: нет



А как быть если картинка jpg большого размера (200Мб и более) разрешение 23000*20000 (примерно), оперативы не хватает чтоб просто в ACDSee просмотреть... не то что отредактировать где-нить. 
вышеописанный метод, я так понимаю, тоже не прокатит? есть какие-нибудь варианты, чтоб такие картинки резать без загрузки оперативы?
PM MAIL   Вверх
Alexeis
Дата 29.11.2007, 21:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 55
Всего: 459



На самом деле жпеги состоят из блоков размеров 8х8 пикселей. Если вырезать фрагменты кратные 8х8, то можно делать обрезку не распаковывая жпегу целиком. Но к сожалению в GDI+ без потерь можно только повернуть и отразить картинку. Для того чтобы делать обрезку без потерь, нужно лезть в описание формата и делать все самому.

Добавлено через 2 минуты и 11 секунд
Есть еще так называемые Cached Bitmaps, т.е. работать с харда, но отображать в память обрабатываемые фрагменты.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Звук, графика и видео"
Girder
Snowy
Alexeis

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • По вопросам разработки игр стоит заглянуть сюда

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема »


 




[ Время генерации скрипта: 0.0897 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.