1. Пользоваться форумом на планшетах и телефонах стало удобнее благодаря Tapatalk

Можно ли изменить размер JPG, при открытии?

Тема в разделе "MAXScript", создана пользователем -, 17 апр 2003.

Модераторы: Savin Denis
  1. Guest

    При открытии каких либо файлов, напимер JPG, размер которых к примеру 700*650 пикселей, происходит небольшое несоответствие в скрипте:

    plugin textureMap drawMap
    name:"DrawMap"
    classid:#(0xb01b213a,0xdbe89dc8)
    extends:bitmaptexture
    replaceui:true
    (
    local pointarray = #(),tmap,t_draw
    fn getuvinfo obj sray =
    (
    local intray,tvface,tvarray,tv
    if obj == undefined do return()
    intray = intersectrayex obj sray
    if intray == undefined do return()
    try
    (
    tvface = gettvface obj intray[2]
    )
    catch (
    print "No tv faces"
    return()
    )
    tvarray = #(gettvert obj tvface.x,
    gettvert obj tvface.y,gettvert obj tvface.z)
    tv = (tvarray[1]*intray[3].x)+(tvarray[2] * intray[3].y)+(tvarray[3] * intray[3].z)
    )
    fn drawhelper obj sray =
    (
    local intray
    if obj == undefined do return()
    intray = intersectray obj sray
    if intray == undefined do return()
    append pointArray (point pos:intRay.pos showaxis:false)
    )

    parameters main rollout:params
    (
    clp_color type:#color ui:clp_color
    cbt_draw type:#boolean ui:cbt_draw


    on cbt_draw set state do
    (
    if $ == undefined do (
    cbt_draw = false;return()
    )
    if not (iskindof $ editadlemesh) do addmodifier $ (normalmodifier())
    while state == true do (
    starttool t_draw
    )
    if state == false do stoptool t_draw
    )
    )--end rol params

    rollout params "DrawMap Parameters" width:310 height:303
    (
    button btn "Open" pos:[135,3] width:53 height:21
    colorPicker clp_color "SetColor" pos:[14,36] width:84 height:20 color:(color 255 255 0)
    checkbutton cbt_draw "Draw" pos:[131,62] width:60 height:21 highlightColor:(color 180 255 180)
    bitmap bmp1 "Bitmap" pos:[31,90] width:256 height:208 fileName:"d:\!distr\qwe.bmp"
    button btn29 "ABOUT" pos:[215,31] width:72 height:24
    on btn pressed do
    (f = getOpenFileName \
    types:"Jpg(*.Jpg)|*.Jpg|All|*.*|"
    tmap = (openbitmap (getFilenamePath f+filenameFromPath f));close tmap
    delegate.filename = (getFilenamePath f+filenameFromPath f)
    )
    on btn29 pressed do
    (
    messagebox"This Script "
    )
    )fn drawbitmap bmap uvdata =
    (
    local ppos
    ppos = [(uvdata.x * bmap.width) as integer, (bmap.height - (uvdata.y * bmap.height)) as integer]
    c = params.clp_color.color
    setpixels bmap ppos #(c)
    )

    tool t_draw
    (
    local uvdata

    on mousepoint click do
    (
    if click == 1 then (
    uvdata = getuvinfo $ (mapscreentoworldray viewpoint)
    if uvdata == undefined do return()
    drawbitmap delegate.bitmap uvdata
    drawhelper $ (mapscreentoworldray viewpoint)
    )
    else
    (
    delete pointarray; pointarray = #()
    delegate.apply = true
    #stop
    )
    )

    on mouseabort click do cbt_draw = false
    )

    on create do
    (f = getOpenFileName \
    types:"Jpg(*.Jpg)|*.Jpg|All|*.*|"

    save (bitmap 256 256 filename:("c:\\drawmap.bmp"))
    tmap = (openbitmap (getFilenamePath f+filenameFromPath f));close tmap
    delegate.filename = (getFilenamePath f+filenameFromPath f))
    )

    Он продолжает работать : наносить пиксели на объект во вьюпортах, но когда размер карты большой более 700 пикселе в длину и ширину, то чтоб он нанёс пиксель надо тыкнуть много раз мышкой,а это очень не удобно, когда битмап 250*250 пикселей то нанести очень легко и удобно.Так вот можно ли при открытии JPG изменить её размер, до 250 пикселей хотябы или нет, если можно,то каким образом.ЗАранее благодарен.А!!!Заодно ещё раз спасибо DENIS' у!!!!!
     
  2. Savin Denis vip

    Savin Denis Moderator Команда форума

    С нами с:
    05.05.2005
    Сообщения:
    1.633
    Симпатии:
    0
    Баллы:
    210
    если не ошибаюсь напрямую невозможно растянуть картинку
    надо либо написать свою фукцию либо глянуть раширения
    возможно есть где
     
  3. Savin Denis vip

    Savin Denis Moderator Команда форума

    С нами с:
    05.05.2005
    Сообщения:
    1.633
    Симпатии:
    0
    Баллы:
    210
    посмотри MakeIcon_4_55.ms в стандарных скриптах
    вороде там чтото на эту тему есть
     
  4. Guest

    Спасибо за совет! Я посмотрел этот скрипт, он ооочень большой, я с ним не разбирался, т.е. как он работает а просмотрел только текст. В неоторых месте нашёл что-то похожее на размеры загружаемых файлов.

    global out_file16 = bitmap 16 15-- это пременная битмэп с размером 16*15 пикслей, это не то, кажется?

    Вот смотри:

    input_file16 = openbitmap (pathname.text+"\\"+lib_list[lls]+"_16i.bmp") --это открывается битмап просто?

    Наиболее похожим является эта часть

    for i = 0 to 14 do
    (
    pixel_line = getpixels input_file16 [(icon_number.value-1)*16,i] 16
    setpixels out_file16 [0,i] pixel_line
    ) Тут они что-то получают размер чтоль, а потом изменяют его???

    А может сделать пустой растр размером 300*300 пикселей, а потом поместить
    в него изображение загружаемого, хотя не получится, нельзя же копировать содержимое растра...
     
  5. Guest

    Рад что на твои вопросы отвечают!!!
    УДАЧИ!!!!!!!
     
  6. Guest

    Я тут попарился долго... вот что получилось:

    rollout unnamedRollout "rol" width:295 height:229
    (
    button btn1 "button" pos:[8,75] width:120 height:32
    editText edt6 "" pos:[11,6] width:126 height:19
    on btn1 pressed do
    (
    b = bitmap 300 300
    f = getOpenFileName \
    types:"bmp(*.bmp)|*.bmp|"
    if f != undefined then
    ( open = openbitmap(getFilenamePath f+filenameFromPath f)
    copy open b
    edt6.text = b.height as string +"*"+ b.width as string
    close b
    )
    ))
    createDialog unnamedRollout width:162 height:130
    таким образом создаём битмап B , который имеет размеры 300*300 пикселей.
    потом открываем OPEN из диалога открытия, теперь open имеет к-л размеры.
    И копируем этот OPEN в В, при этом если размеры не совпадают, то OPEN будет масштабироваться до размеров В, это вродь то что надо, только у меня не получается сохранить БИТМАП В. пОМОГИТЕ, пожалуйста. в нужный файл , он ругается ...
     
  7. Savin Denis vip

    Savin Denis Moderator Команда форума

    С нами с:
    05.05.2005
    Сообщения:
    1.633
    Симпатии:
    0
    Баллы:
    210
    rollout unnamedRollout "rol" width:295 height:229
    (
    button btn1 "button" pos:[8,75] width:120 height:32
    editText edt6 "" pos:[11,6] width:126 height:19
    on btn1 pressed do
    (

    f = getOpenFileName \
    types:"bmp(*.bmp)|*.bmp|"
    if f != undefined then
    ( open = openbitmap f
    b = bitmap 300 300 filename:f
    copy open b
    close open
    edt6.text = b.height as string +"*"+ b.width as string
    save b
    close b
    )
    ))
     
  8. Guest

    СПАСИБО ЗА ПОМОЩЬ, не хочу быть надоедливым, но сам я не могу понять .Надеюсь на Вашу помощь.
    В средстве работы с мышью есть событие ON MOUSEMOVE , ОНО ВЫЗЫВАЕТСЯ ПРИ КАЖДОМ ДВИЖЕНИИ МЫШИ. Это я всё по тому же скрипту, который Вы помогли сделать:
    plugin textureMap drawMap
    name:"DrawMap"
    classid:#(0xb01b213a,0xdbe89dc8)
    extends:bitmaptexture
    replaceui:true
    (
    local pointarray = #(),tmap,t_draw
    --local color = #(color 255 255 0)

    fn getuvinfo obj sray =
    (
    local intray,tvface,tvarray,tv
    if obj == undefined do return()
    intray = intersectrayex obj sray
    if intray == undefined do return()
    try
    (
    tvface = gettvface obj intray[2]
    )
    catch (
    print "No tv faces"
    return()
    )
    tvarray = #(gettvert obj tvface.x,
    gettvert obj tvface.y,gettvert obj tvface.z)
    tv = (tvarray[1]*intray[3].x)+(tvarray[2] * intray[3].y)+(tvarray[3] * intray[3].z)
    )
    /*
    fn drawbitmap bmap uvdata =
    (
    local ppos
    ppos = [(uvdata.x * bmap.width) as integer, (bmap.height - (uvdata.y * bmap.height)) as integer]
    c = params.clp_color.color
    setpixels bmap ppos c -- #(color 255 255 0)
    )
    */
    fn drawhelper obj sray =
    (
    local intray
    if obj == undefined do return()
    intray = intersectray obj sray
    if intray == undefined do return()
    append pointArray (point pos:intRay.pos showaxis:false)
    )

    parameters main rollout:params
    (
    clp_color type:#color ui:clp_color
    cbt_draw type:#boolean ui:cbt_draw

    on cbt_draw set state do
    (
    if $ == undefined do (
    cbt_draw = false;return()
    )
    if not (iskindof $ editadlemesh) do addmodifier $ (normalmodifier())
    while state == true do (
    starttool t_draw
    )
    if state == false do stoptool t_draw
    )
    )

    rollout params "DrawMap Parameters"
    (
    colorpicker clp_color "SetColor" color:(color 255 255 0)
    checkbutton cbt_draw "Draw" highlightcolor:(color 180 255 180)

    )
    fn drawbitmap bmap uvdata =
    (
    local ppos
    ppos = [(uvdata.x * bmap.width) as integer, (bmap.height - (uvdata.y * bmap.height)) as integer]
    c = params.clp_color.color
    setpixels bmap ppos #(c) -- #(color 255 255 0)
    )

    tool t_draw
    (
    local uvdata

    on mousepoint click do
    (
    if click == 1 then (
    uvdata = getuvinfo $ (mapscreentoworldray viewpoint)
    if uvdata == undefined do return()
    drawbitmap delegate.bitmap uvdata
    drawhelper $ (mapscreentoworldray viewpoint)
    )
    else
    (
    delete pointarray; pointarray = #()
    delegate.apply = true
    #stop
    )
    )

    on mouseabort click do cbt_draw = false
    )

    on create do
    (
    save (bitmap 256 256 filename:("c:\\drawmap.bmp"))
    tmap = (openbitmap ("c:\\drawmap.bmp"));close tmap
    delegate.filename = ("c:\\drawmap.bmp")
    )
    )
    Тут в одном фрагменте рассматривается действия при щелчке мыши.
    on mousepoint click do
    (
    if click == 1 then (
    uvdata = getuvinfo $ (mapscreentoworldray viewpoint)
    if uvdata == undefined do return()
    drawbitmap delegate.bitmap uvdata
    drawhelper $ (mapscreentoworldray viewpoint)
    )
    else
    (
    delete pointarray; pointarray = #()
    delegate.apply = true
    #stop
    )
    )
    --На этом месте должно быть следущее,
    --ON MOUSEMOVE do cbt_draw = true, дак вот, он не запускается, по идее должно
    --происходить следущее, нажимаем кнопку, происходят вышеуказанные действия и если
    --она не отжата и происходит движение, то выполняется ON mouseMove, где
    --повторяется нанесение штрихов(пикселей) таким образом получаются линии до
    --отжатия кнопки мыши. Но этого нету.Может вы знаете как этот ON MouseMove
    --работает???Помогите, пожалуйста.
    on mouseabort click do cbt_draw = false
    )
     
  9. Savin Denis vip

    Savin Denis Moderator Команда форума

    С нами с:
    05.05.2005
    Сообщения:
    1.633
    Симпатии:
    0
    Баллы:
    210
    plugin textureMap drawMap
    name:"DrawMap"
    classid:#(0xb01b213a,0xdbe89dc8)
    extends:bitmaptexture
    replaceui:true
    (
    local pointarray = #(),tmap,t_draw
    --local color = #(color 255 255 0)

    fn getuvinfo obj sray =
    (
    local intray,tvface,tvarray,tv
    if obj == undefined do return()
    intray = intersectrayex obj sray
    if intray == undefined do return()
    try
    (
    tvface = gettvface obj intray[2]
    )
    catch (
    print "No tv faces"
    return()
    )
    tvarray = #(gettvert obj tvface.x,
    gettvert obj tvface.y,gettvert obj tvface.z)
    tv = (tvarray[1]*intray[3].x)+(tvarray[2] * intray[3].y)+(tvarray[3] * intray[3].z)
    )
    /*
    fn drawbitmap bmap uvdata =
    (
    local ppos
    ppos = [(uvdata.x * bmap.width) as integer, (bmap.height - (uvdata.y * bmap.height)) as integer]
    c = params.clp_color.color
    setpixels bmap ppos c -- #(color 255 255 0)
    )
    */
    fn drawhelper obj sray =
    (
    local intray
    if obj == undefined do return()
    intray = intersectray obj sray
    if intray == undefined do return()
    append pointArray (point pos:intRay.pos showaxis:false)
    )

    parameters main rollout:params
    (
    clp_color type:#color ui:clp_color
    cbt_draw type:#boolean ui:cbt_draw

    on cbt_draw set state do
    (
    if $ == undefined do (
    cbt_draw = false;return()
    )
    if not (iskindof $ editadlemesh) do addmodifier $ (normalmodifier())
    while state == true do (
    starttool t_draw
    )
    if state == false do stoptool t_draw
    )
    )

    rollout params "DrawMap Parameters"
    (
    colorpicker clp_color "SetColor" color:(color 255 255 0)
    checkbutton cbt_draw "Draw" highlightcolor:(color 180 255 180)

    )
    fn drawbitmap bmap uvdata =
    (
    local ppos
    ppos = [(uvdata.x * bmap.width) as integer, (bmap.height - (uvdata.y * bmap.height)) as integer]
    c = params.clp_color.color
    setpixels bmap ppos #(c) -- #(color 255 255 0)
    )

    tool t_draw
    (
    local uvdata

    on mousepoint click do
    (
    if click == 1 then (
    uvdata = getuvinfo $ (mapscreentoworldray viewpoint)
    if uvdata == undefined do return()
    drawbitmap delegate.bitmap uvdata
    drawhelper $ (mapscreentoworldray viewpoint)
    )
    else
    (
    delete pointarray; pointarray = #()
    delegate.apply = true
    #stop
    )
    )
    on mouseMove clickno do
    (
    uvdata = getuvinfo $ (mapscreentoworldray viewpoint)
    if uvdata == undefined do return()
    drawbitmap delegate.bitmap uvdata
    drawhelper $ (mapscreentoworldray viewpoint)

    )
    on mouseabort click do cbt_draw = false
    )

    on create do
    (
    save (bitmap 256 256 filename:("c:\\drawmap.bmp"))
    tmap = (openbitmap ("c:\\drawmap.bmp"));close tmap
    delegate.filename = ("c:\\drawmap.bmp")
    )
    )
     
Модераторы: Savin Denis

Поделиться этой страницей