forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   2D-программирование (http://forum.boolean.name/forumdisplay.php?f=13)
-   -   вопрос по нарезке картинки (http://forum.boolean.name/showthread.php?t=12003)

Артем Валерьевич 22.02.2010 21:55

вопрос по нарезке картинки
 
Ребята, подскажите, как нарезать картинку на полоски заданной ширины, а затем раздвинуть их на такую же ширину?

Очень нужно:(

ABTOMAT 22.02.2010 22:13

Ответ: вопрос по нарезке картинки
 
CopyRect не помогает?

Артем Валерьевич 22.02.2010 22:20

Ответ: вопрос по нарезке картинки
 
попробую

Артем Валерьевич 22.02.2010 22:35

Ответ: вопрос по нарезке картинки
 
ковырял, но похоже суть функции CopyRect ускользает от меня

moka 22.02.2010 22:41

Ответ: вопрос по нарезке картинки
 
Набросай в шопе, и покажи, как это должно быть...

Артем Валерьевич 22.02.2010 22:55

Ответ: вопрос по нарезке картинки
 
Вложений: 2
вот так нужно чтобы резало:

moka 22.02.2010 23:24

Ответ: вопрос по нарезке картинки
 
Быстрый - биллбоарды, с разными текстурными координатами. Тут можно и в реалтайме сделать, будут менять.
Медленный но точный - работа с чтением/записью пикселей.

Артем Валерьевич 22.02.2010 23:27

Ответ: вопрос по нарезке картинки
 
Вот вот второй самое оно, но как

IGR 23.02.2010 01:14

Ответ: вопрос по нарезке картинки
 
Артем Валерьевич, сорри, я чет непойму... У тебя картинка-результат сплющенная по горизонтали относительно исходной должна быть или как ?? (или эт ее мобильный браузер исказил 0_о )
Если ненада нмчего плющить то:
Решаеш на скок частей будеш резать (переменная Р) !!
Потом читаешь пиксели по горизонтали все а по вертикали Р !!
Пишеш их в другую картинку !!
И так Р раз !!
Еще оффсеты (пустые или черные пиксели между) этими полосками !!

А если нада плющить то я хз-че... Немного положнее задача !!:)

moka 23.02.2010 06:33

Ответ: вопрос по нарезке картинки
 
Это весьма простая логическая задачка, делается не изощрёнными циклами..

Артем Валерьевич 23.02.2010 13:03

Ответ: вопрос по нарезке картинки
 
Вот как я написал, но чет запутался, гружу картинку, создаю дополнительную текстуру, в которую рисую, считываю картинку поблочно, добавляю черные прямоугольники, и сохраняю готовую,
(Спасибо H@non) , только вот нефурычит чегото, запутался я и прошу помощи:

Код:

; CopyRect Example

; Turn on graphics mode
Graphics 1024,768,16
;SetBuffer FrontBuffer()
; create a blank image


image2=LoadImage ("IMG_2743.jpg")

image=CreateImage (ImageWidth(image2),ImageHeight(image2),1)

Dim pix(ImageWidth(image2),ImageHeight(image2))

SetBuffer ImageBuffer(image2)
LockBuffer ImageBuffer(image2)
y2 = 0
For y = 0 To ImageHeight(image2)
;копируем строки пикселей
If y Mod 2 = 0 Then
Rect 0, y2,ImageWidth(image2), 4
y2 = y2 + 4
EndIf
y2 = y2 + 1
Next

For y=0 To ImageHeight(image2)
For x=0 To ImageWidth(image2)
pix(x,y)=ReadPixel(x,y)
Next
Next


; Wait a couple of seconds so the user can see it
;Delay 2000
If KeyHit(2) Then

For y=0 To ImageHeight(image)
For x=0 To ImageWidth(image)
;pix(x,y)=ReadPixel(x,y)
WritePixel x,y,pix(ImageWidth(image2),ImageHeight(image2)-y)

Next
Next
ok=SaveImage (pix(ImageWidth(image2),ImageHeight(image2)),"rezan.bmp")

End If

Cls
;DrawImage gfxBlank,0,0
WaitKey


H@NON 23.02.2010 15:42

Ответ: вопрос по нарезке картинки
 
вот держи
Код:

Graphics 800, 600, 32, 2

Local img_source = CreateImage(256,256)
SetBuffer ImageBuffer(img_source)
    Color 255,255,0
    Oval 4, 4, 248, 248, 1
    Color 255,0,0
    Oval 50, 80, 30, 30, 1
    Oval 176, 80, 30, 30, 1
    Rect 50, 180, 156, 20, 1

Local img = DeformImage(img_source)

DrawImage img, 0, 0
DrawImage img_source, 400, 0

WaitKey()
End

Function DeformImage(source, height=40, count=7)
    Local x, y, y2
    Local pix
    Local w = ImageWidth(source)
    Local h = ImageHeight(source)
    Local img_deform = CreateImage(w, h+height*count)
    Local buff = ImageBuffer(img_deform)
    Local buff_source = ImageBuffer(source)
   
    Local Aspect = h / count
   
    SetBuffer buff
    LockBuffer(buff)
    LockBuffer(buff_source)
        For y = 0 To h
            If (y Mod Aspect) = 0 Then
                Color 0, 0, 0
                Rect 0, y2, w, height
                y2 = y2 + height
            EndIf
            For x = 0 To w
                pix = ReadPixel(x, y, buff_source)
                WritePixel x, y2, pix
            Next
            y2 = y2 + 1
        Next
    UnlockBuffer(buff)
    UnlockBuffer(buff_source)
    SetBuffer FrontBuffer()
   
    Return img_deform
End Function


Артем Валерьевич 23.02.2010 17:08

Ответ: вопрос по нарезке картинки
 
H@NON спасибо, H@NON спасибо, ура виват

Артем Валерьевич 23.02.2010 17:22

Ответ: вопрос по нарезке картинки
 
Да здравствует стереофотография, H@non, я в долгу перед тобой


Часовой пояс GMT +4, время: 14:37.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot