|
Mr.Pihto ↓
|
 |
|
01 Февраль, 2011, 08:55:08
|
НЕ ХУЕТА!
ХУЕТА!
|
|
не выябывайся
Группа: Адекваты
Карма: 17
Сообщений: 1398 Сила слова: 1.22
|
Короче мне нужнолюбую картинку немного заквадратить. решил брать по 9 пикселей с картинки определять их среднюю арифметическую цвета и закрашивать им по 9 пикселей.. но мой говнокод не оправдал моих надежд.. барыжняг какойто получился...=(
проблема в следующем:
на выходе изображение получаеца говняшкой - как мне и надо (ура!), но оно сука в 3 раза меньше чем нужно.. нужно както хитро отсортировать списки но в подобных задачах я пока и уже бессилен(пол ночи ковырял)
картинка пока что выходит чернобелая - эту проблему решать не надо.. с этим проблем нет.. просто сделал себе немного комфортнее в куче говна. ну собсно вот
# coding: utf-8
from PIL import Image, ImageDraw, ImageOps
im = Image.open('C:\image.jpg')
im = im.convert('L')
x1,y1 = im.size
x1,y1
dot = im.load()
lst = []
newlst = []
for x in xrange(x1):
if x%3==0:
if x1-x<3: break #если картинка заканчивается меньше чем через 3 пикселя - нахуй
for y in xrange(y1):
if y%3==0:
if y1-y<3: break #--//--
col = (dot[x,y]+dot[x+1,y]+dot[x,y+1]+dot[x+1,y+1]+dot[x+2,y]+dot[x+2,y+1]+dot[x+2,y+2]+dot[x+1,y+2]+dot[x,y+2])/9 # средняя орифметическая 9 пикселей
lst.append(col)
newlst.append(lst)
del lst
lst = []
image = Image.new("RGB", (x1,y1), (255, 255, 255))
draw = ImageDraw.Draw(image)
for q in xrange(len(newlst)): #нарисовать новую картинку из матрица которая в 3 раза меньше чем оригинал.. вот тут жопа
if q%3==0:
for r in xrange(len(newlst[q])):
if r%3==0:
draw.point((q,r),(newlst[q][r],newlst[q][r],newlst[q][r]))
draw.point((q+1,r),(newlst[q][r],newlst[q][r],newlst[q][r]))
draw.point((q,r+1),(newlst[q][r],newlst[q][r],newlst[q][r]))
draw.point((q+1,r+1),(newlst[q][r],newlst[q][r],newlst[q][r]))
draw.point((q+2,r),(newlst[q][r],newlst[q][r],newlst[q][r]))
draw.point((q+2,r+1),(newlst[q][r],newlst[q][r],newlst[q][r]))
draw.point((q+2,r+2),(newlst[q][r],newlst[q][r],newlst[q][r]))
draw.point((q+1,r+2),(newlst[q][r],newlst[q][r],newlst[q][r]))
draw.point((q,r+2),(newlst[q][r],newlst[q][r],newlst[q][r]))
#даже не смотря на то что я закрашиваю 9 пикселей а не 1 картинка все равно сука в 3 раза меньше.... вот тут я недопонимаю
image.show()
|
|
|
|
|
Записан
|
|
|
|
|
phpdude ↓
|
 |
|
01 Февраль, 2011, 09:15:42 , спустя 20 минут 34 секунды
|
НЕ ХУЕТА!
ХУЕТА!
|
я - ЭМО
Группа: в ухо Карма: 345
Сообщений: д-о-х-у-я! Сила слова: 1.66
|
if q%3==0:
не? я алго не смотрел, просто прикинул где может быть ошибка
|
|
|
|
|
Записан
|
забанен. могу забанить других, пишите в личку BEER. Helping ugly people have sex since 1862.
|
|
|
|
Mr.Pihto ↓
|
 |
|
01 Февраль, 2011, 09:26:26 , спустя 10 минут 44 секунды
|
НЕ ХУЕТА!
ХУЕТА!
|
|
не выябывайся
Группа: Адекваты
Карма: 17
Сообщений: 1398 Сила слова: 1.22
|
не.. эт я проверяю q.. код выполняется только если она кратна трём.. тобиш чтоб через 2 пикселя проскакивал скрипт.. если он этого делать не будет то 9-пиксельные квадраты будут накладываться друг на друга
|
|
|
|
|
Записан
|
|
|
|
|
phpdude ↓
|
 |
|
01 Февраль, 2011, 09:33:52 , спустя 7 минут 26 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
я - ЭМО
Группа: в ухо Карма: 345
Сообщений: 20790 Сила слова: 1.66
|
Mr.Pihto, тогда похуй)
|
|
|
|
|
Записан
|
забанен. могу забанить других, пишите в личку BEER. Helping ugly people have sex since 1862.
|
|
|
|
Mr.Pihto ↓
|
 |
|
01 Февраль, 2011, 09:35:26 , спустя 1 минуту 34 секунды
|
НЕ ХУЕТА!
ХУЕТА!
|
|
не выябывайся
Группа: Адекваты
Карма: 17
Сообщений: 1398 Сила слова: 1.22
|
ну если ресайзить из маленького ресунка то грани поплывут да и содержимое самих квадратов уёбещнее будет..
|
|
|
|
|
Записан
|
|
|
|
|
Mr.Pihto ↓
|
 |
|
01 Февраль, 2011, 09:43:53 , спустя 8 минут 27 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
|
не выябывайся
Группа: Адекваты
Карма: 17
Сообщений: 1398 Сила слова: 1.22
|
откройте мне глаза Т_Т
|
|
|
|
|
Записан
|
|
|
|
|
master ↓
|
 |
|
01 Февраль, 2011, 10:22:38 , спустя 38 минут 45 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
Квадратов сколько видишь ты?
Группа: Джедаи Карма: 44
Сообщений: 2080 Сила слова: 2.12
|
сохрани в jpeg и пережми imagemagick
$imgfile = '/path/to/image.jpg';
exec("convert $imgfile -quality 80 JPG:$imgfile")
|
|
|
|
|
Записан
|
|
|
|
|
artoodetoo ↓
|
 |
|
01 Февраль, 2011, 12:21:20 , спустя 1 час 58 минут 42 секунды
|
НЕ ХУЕТА!
ХУЕТА!
|
с особым цинизмом
Группа: в ухо Карма: 124
Сообщений: 3805 Сила слова: 3.26
|
convert cowboy.jpg -resize 33% cowboy2.jpg
convert cowboy2.jpg -scale 300% cowboy3.jpg
|
|
|
|
Записан
|
|
|
|
|
Frozzeg ↓
|
 |
|
01 Февраль, 2011, 12:22:56 , спустя 1 минуту 36 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
Группа: Пятросянище Карма: 92
Сообщений: 5499 Сила слова: 1.67
|
хауз
|
|
|
|
|
Записан
|
Эксперт — это человек, который в узкой области допустил все возможные ошибки. © Нильс Бор. Отложить на завтра — значит впасть в рекурсию. © Frozzeg
|
|
|
|
artoodetoo ↓
|
 |
|
01 Февраль, 2011, 12:49:17 , спустя 26 минут 21 секунду
|
НЕ ХУЕТА!
ХУЕТА!
|
с особым цинизмом
Группа: в ухо Карма: 124
Сообщений: 3805 Сила слова: 3.26
|
чето я накосячил с параметрами, но суть понятна.
(не учел, что под Windows символ % имеет особый смысл, надо писать "33%%" чтобы не проебался)
итак, уменьшаем "по умному", чтобы сохранилось максимум инфы о цвете, а увеличиваем тупо размножая точки. тогда картинка будет почти без мусора и точки жирные, как заказывали:
батник, под *nix уберите лишние проценты:
convert cowboy.jpg -resize 20%% -quality 100 cowboy2.jpg
convert cowboy2.jpg -scale 500%% cowboy3.jpg
на php БЕЗ imagic аналогично можно сделать через imagecopyresampled + imagecopyresized
|
|
|
« Последнее редактирование: 01 Февраль, 2011, 12:49:17 от artoodetoo »
|
Записан
|
|
|
|
|
Mr.Pihto ↓
|
 |
|
01 Февраль, 2011, 12:51:01 , спустя 1 минуту 44 секунды
|
НЕ ХУЕТА!
ХУЕТА!
|
|
не выябывайся
Группа: Адекваты
Карма: 17
Сообщений: 1398 Сила слова: 1.22
|
вот оно че.. короче в блоке кода где картинка снова отрисовывается я не по тем координатам пиксели красил...по(x/3,y/3)
# coding: utf-8
from PIL import Image, ImageDraw, ImageOps
im = Image.open('C:\en.gif')
im = im.convert('L')
x1,y1 = im.size
dot = im.load()
lst = []
newlst = []
for x in xrange(x1):
if x%3==0:
if x1-x<3: break
for y in xrange(y1):
if y%3==0:
if y1-y<3: break
col = (dot[x,y]+dot[x+1,y]+dot[x,y+1]+dot[x+1,y+1]+dot[x+2,y]+dot[x+2,y+1]+dot[x+2,y+2]+dot[x+1,y+2]+dot[x,y+2])/9
lst.append(col)
newlst.append(lst)
del lst
lst = []
image = Image.new("RGB", (x1,y1), (255, 255, 255))
draw = ImageDraw.Draw(image)
for q in xrange(0,x1,3):
q1 = q/3
if q>=(len(newlst)-3)*3: break
for r in xrange(0,y1,3):
r1 = r/3
if r>=(len(newlst[q1])-3)*3: break
draw.point((q,r),(newlst[q1][r1],newlst[q1][r1],newlst[q1][r1]))
draw.point((q+1,r),(newlst[q1][r1],newlst[q1][r1],newlst[q1][r1]))
draw.point((q,r+1),(newlst[q1][r1],newlst[q1][r1],newlst[q1][r1]))
draw.point((q+1,r+1),(newlst[q1][r1],newlst[q1][r1],newlst[q1][r1]))
draw.point((q+2,r),(newlst[q1][r1],newlst[q1][r1],newlst[q1][r1]))
draw.point((q+2,r+1),(newlst[q1][r1],newlst[q1][r1],newlst[q1][r1]))
draw.point((q+2,r+2),(newlst[q1][r1],newlst[q1][r1],newlst[q1][r1]))
draw.point((q+1,r+2),(newlst[q1][r1],newlst[q1][r1],newlst[q1][r1]))
draw.point((q,r+2),(newlst[q1][r1],newlst[q1][r1],newlst[q1][r1]))
image.save('C:\img.jpg',"JPEG")
Спустя 54 секунды добавил бля не то)
Спустя 25 секунд добавил разогнался)))
|
|
|
« Последнее редактирование: 01 Февраль, 2011, 12:47:40 от Mr.Pihto »
|
Записан
|
|
|
|
|
artoodetoo ↓
|
 |
|
01 Февраль, 2011, 12:52:31 , спустя 1 минуту 30 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
с особым цинизмом
Группа: в ухо Карма: 124
Сообщений: 3805 Сила слова: 3.26
|
магия! из вовы делаем альберта Спустя 27 секунд добавил зря убрал )))
|
|
|
|
|
Записан
|
|
|
|
|
Mr.Pihto ↓
|
 |
|
01 Февраль, 2011, 12:55:44 , спустя 3 минуты 13 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
|
не выябывайся
Группа: Адекваты
Карма: 17
Сообщений: 1398 Сила слова: 1.22
|
ыыыыыыыы =))))))))
|
|
|
|
|
Записан
|
|
|
|
|
Mr.Pihto ↓
|
 |
|
01 Февраль, 2011, 01:31:18 , спустя 35 минут 34 секунды
|
НЕ ХУЕТА!
ХУЕТА!
|
|
не выябывайся
Группа: Адекваты
Карма: 17
Сообщений: 1398 Сила слова: 1.22
|
кстате как в питоне определять каждуй, допустим 10ю итерацию в цикле фор?
|
|
|
|
|
Записан
|
|
|
|
|
Mr.Pihto ↓
|
 |
|
01 Февраль, 2011, 01:37:24 , спустя 6 минут 6 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
|
не выябывайся
Группа: Адекваты
Карма: 17
Сообщений: 1398 Сила слова: 1.22
|
флажками не хочу.. должно быть както проще
|
|
|
|
|
Записан
|
|
|
|
|