Rumah pembangunan bahagian belakang tutorial php php版本 上妆程序 给图片添加饰物

php版本 上妆程序 给图片添加饰物

Jun 13, 2016 pm 12:52 PM
background height images width

php版本 化妆程序 给图片添加饰物

大家估计都用手机玩过 化妆整人的程序

也就是对照片加工处理 添加饰物 然后生成一张图片 可以搞笑娱乐大家

?

?

?

本文主要采用的技术有

1.jquery的拖拽 drag& drop技术

2.PHP转换Json data

3.CSS3 +HTML5

?

首先我们建立一个大体的框架

<div id="content">
    <div id="background" class="background">
        <img  src="/static/imghw/default1.png" data-src="background.jpg" class="lazy" id="obj_0"    style="max-width:90%"  style="max-width:90%" alt=" php版本 上妆程序 给图片添加饰物 " >
    </div>
 
    <div id="tools">
    </div>
 
    <div id="objects">
        <div class="obj_item">
            <img class="ui-widget-content lazy" src="/static/imghw/default1.png" data-src="elements/bowtie.png" id="obj_1"    style="max-width:90%" alt="el">
        </div>
        <div class="obj_item">
            <img class="ui-widget-content lazy" src="/static/imghw/default1.png" data-src="elements/mus1.png" id="obj_2"    style="max-width:90%" alt="el">
        </div>
        <div class="obj_item">
            <img class="ui-widget-content lazy" src="/static/imghw/default1.png" data-src="elements/beard.png" id="obj_3"    style="max-width:90%" alt="el">
        </div>
    </div>
 
    <a id="submit"><span></span></a>
 
    <form id="jsonform" action="merge.php" method="POST">
        <input id="jsondata" name="jsondata" type="hidden" value="" autocomplete="off">
    </form>
 
</div>
Salin selepas log masuk

?采用的css 

#content{
    position:relative;
    width:1105px;
    height:500px;
    margin:40px auto 0px auto;
    background-color:#F9F9F9;
    -moz-border-radius:6px;
    -webkit-border-radius:6px;
    border-radius:6px;
    -moz-box-shadow:0px 0px 8px #ccc;
    -webkit-box-shadow:0px 0px 8px #ccc;
    box-shadow:0px 0px 8px #ccc;
}
.background{
    position:absolute;
    width:640px;
    height:480px;
    top:10px;
    left:215px;
    -moz-box-shadow:0px 0px 3px #bbb;
    -webkit-box-shadow:0px 0px 3px #bbb;
    box-shadow:0px 0px 3px #bbb;
}
Salin selepas log masuk

?然后是拖拽的元素和图片的 css样式

?

#objects{
    width:210px;
    height:486px;
    top:10px;
    left:10px;
    position:absolute;
}
.obj_item{
    width:70px;
    height:70px;
    float:left;
}
#tools{
    width:230px;
    top:8px;
    right:10px;
    position:absolute;
    height:420px;
    overflow-y:scroll;
    overflow-x:hidden;
}
.item{
    border:3px solid #fff;
    background-color:#ddd;
    height:60px;
    position:relative;
    margin:2px 5px 2px 2px;
    -moz-border-radius:3px;
    -webkit-border-radius:3px;
    border-radius:3px;
    -moz-box-shadow:0px 0px 2px #999;
    -webkit-box-shadow:0px 0px 2px #999;
    box-shadow:0px 0px 2px #999;
}
.thumb{
    width:50px;
    height:50px;
    margin:5px;
    float:left;
}
.slider{
    float: left;
    width: 115px;
    margin: 30px 0px 0px 5px;
    background-color:#fff;
    height:10px;
    position:relative;
}
.slider span{
    font-size:10px;
    font-weight:normal;
    margin-top:-25px;
    float:left;
}
.slider span.degrees{
    position:absolute;
    right:-22px;
    top:20px;
    width:20px;
    height:20px;
}
.slider .ui-slider-handle {
    width:10px;
    height:20px;
    outline:none;
}
a.remove{
    width:16px;
    height:16px;
    position:absolute;
    top:0px;
    right:0px;
    background:transparent url(../images/cancel.png) no-repeat top left;
    opacity:0.5;
    cursor:pointer;
}
a.remove:hover{
    opacity:1.0;
}
Salin selepas log masuk

?

饰品元素 被存储在json data中

var data = {
    "images": [
        {"id" : "obj_0" ,"src" : "background.jpg", "width" : "640", "height" : "480"}
    ]
};
Salin selepas log masuk

?另外元素可以放大缩小 并且可以拖拽

$('#objects img').resizable({
    handles : 'se',
    stop    : resizestop
}).parent('.ui-wrapper').draggable({
    revert  : 'invalid'
});
Salin selepas log masuk

?

$('#background').droppable({
    accept  : '#objects div', /* accept only draggables from #objects */
    drop    : function(event, ui) {
        var $this       = $(this);
        ++count_dropped_hits;
        var draggable_elem = ui.draggable;
        draggable_elem.css('z-index',count_dropped_hits);
        /* object was dropped : register it */
        var objsrc      = draggable_elem.find('.ui-widget-content').attr('src');
        var objwidth    = parseFloat(draggable_elem.css('width'),10);
        var objheight   = parseFloat(draggable_elem.css('height'),10);
 
        /* for top and left we decrease the top and left of the droppable element */
        var objtop      = ui.offset.top - $this.offset().top;
        var objleft     = ui.offset.left - $this.offset().left;
 
        var objid       = draggable_elem.find('.ui-widget-content').attr('id');
        var index       = exist_object(objid);
        if(index!=-1) { //if exists update top and left
            data.images[index].top  = objtop;
            data.images[index].left = objleft;
        }
        else{
            /* register new one */
            var newObject = {
                'id'        : objid,
                'src'       : objsrc,
                'width'     : objwidth,
                'height'    : objheight,
                'top'       : objtop,
                'left'      : objleft,
                'rotation'  : '0'
            };
            data.images.push(newObject);
            /* add object to sidebar*/
 
            $('<div></div>',{
                className   :   'item'
            }).append(
                $('<div></div>',{
                    className   :   'thumb',
                    html        :   '<img  class="ui-widget-content lazy" src="/static/imghw/default1.png" data-src="'+objsrc+'"    style="max-width:90%" alt=" php版本 上妆程序 给图片添加饰物 " >'
                })
            ).append(
                $('<div></div>',{
                    className   :   'slider',
                    html        :   '<span>Rotate</span><span class="degrees">0</span>'
                })
            ).append(
                $('<a></a>',{
                    className   :   'remove'
                })
            ).append(
                $('<input>',{
                    type        :   'hidden',
                    value       :   objid       // keeps track of which object is associated
                })
            ).appendTo($('#tools'));
            $('.slider').slider({
                orientation : 'horizontal',
                max         : 180,
                min         : -180,
                value       : 0,
                slide       : function(event, ui) {
                    var $this = $(this);
                    /* Change the rotation and register that value in data object when it stops */
                    draggable_elem.css({
                        '-moz-transform':'rotate('+ui.value+'deg)',
                        '-webkit-transform':'rotate('+ui.value+'deg)'
                    });
                    $('.degrees',$this).html(ui.value);
                },
                stop        : function(event, ui) {
                    newObject.rotation = ui.value;
                }
            });
        }
    }
});
Salin selepas log masuk

?下面是整体的php文件

$res = JSON_decode(stripslashes($_POST['JSONdata']), true);
/* get data */
$count_images   = count($res['images']);
/* the background image is the first one */
$background     = $res['images'][0]['src'];
$photo1         = imagecreatefromjpeg($background);
$foto1W         = imagesx($photo1);
$foto1H         = imagesy($photo1);
$photoFrameW    = $res['images'][0]['width'];
$photoFrameH    = $res['images'][0]['height'];
$photoFrame     = imagecreatetruecolor($photoFrameW,$photoFrameH);
imagecopyresampled($photoFrame, $photo1, 0, 0, 0, 0, $photoFrameW, $photoFrameH, $foto1W, $foto1H);
 
/* the other images */
for($i = 1; $i 
<p>?</p>

 <div class="clear">
                 
              
              
        
            </div>
Salin selepas log masuk
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Cara menggunakan CSS untuk mencapai kesan animasi latar belakang elemen yang berputar Cara menggunakan CSS untuk mencapai kesan animasi latar belakang elemen yang berputar Nov 21, 2023 am 09:05 AM

Cara menggunakan CSS untuk melaksanakan kesan animasi imej latar belakang yang berputar bagi elemen kesan animasi imej latar belakang boleh meningkatkan daya tarikan visual dan pengalaman pengguna halaman web. Artikel ini akan memperkenalkan cara menggunakan CSS untuk mencapai kesan animasi latar belakang elemen yang berputar dan memberikan contoh kod khusus. Pertama, kita perlu menyediakan imej latar belakang, yang boleh berupa gambar yang anda suka, seperti gambar matahari atau kipas elektrik. Simpan imej dan namakannya "bg.png". Seterusnya, buat fail HTML dan tambahkan elemen div dalam fail, tetapkan kepada

html的width是什么意思 html的width是什么意思 Jun 03, 2021 pm 02:15 PM

在html5中,width的意思是宽度,width属性定义元素内容区的宽度,在内容区外面可以增加内边距、边框和外边距,只需要给元素设置“元素{width:数值}”即可。

HMD Slate Tab 5G bocor sebagai tablet jarak pertengahan dengan Snapdragon 7s Gen 2, paparan 10.6 inci dan reka bentuk Lumia HMD Slate Tab 5G bocor sebagai tablet jarak pertengahan dengan Snapdragon 7s Gen 2, paparan 10.6 inci dan reka bentuk Lumia Jun 18, 2024 pm 05:46 PM

Dengan Skyline, HMD Global bersedia untuk memperkenalkan telefon pintar kelas pertengahan dalam gaya Nokia Lumia 920 pada 10 Julai. Menurut maklumat terkini daripada pembocor @smashx_60, reka bentuk Lumia tidak lama lagi akan turut digunakan untuk sebuah tablet, yang akan menjadi c

Jurugambar menyerahkan foto sebenar kepada peraduan imej AI, mendapat tempat ke-3 sebelum memberitahu Jurugambar menyerahkan foto sebenar kepada peraduan imej AI, mendapat tempat ke-3 sebelum memberitahu Jun 16, 2024 pm 06:46 PM

Salah satu pertandingan yang diadakan oleh 1839 Anugerah pada 2024adalah istimewa kerana penyerahannya dijana oleh kecerdasan buatan dan bukannya dicipta dengan kamera. Ini adalah pertandingan yang membangkitkan rasa ingin tahu yang tertentuMilesAstray.Insteadofus

Penjelasan terperinci tentang sifat dimensi CSS: tinggi dan lebar Penjelasan terperinci tentang sifat dimensi CSS: tinggi dan lebar Oct 21, 2023 pm 12:42 PM

Penjelasan terperinci tentang sifat dimensi CSS: tinggi dan lebar Dalam pembangunan bahagian hadapan, CSS ialah bahasa definisi gaya yang berkuasa. Antaranya, ketinggian dan lebar ialah dua atribut dimensi paling asas, digunakan untuk menentukan ketinggian dan lebar elemen. Artikel ini akan menganalisis kedua-dua sifat ini secara terperinci dan memberikan contoh kod khusus. 1. Atribut ketinggian Atribut ketinggian digunakan untuk menentukan ketinggian sesuatu elemen. Anda boleh menggunakan piksel, peratusan atau

Apakah kaedah untuk menyatakan nilai lebar dalam css? Apakah kaedah untuk menyatakan nilai lebar dalam css? Nov 13, 2023 pm 05:47 PM

Kaedah termasuk nilai piksel, peratusan, unit em, unit rem, unit vw/vh, auto, kandungan muat, kandungan min, kandungan maks. Pengenalan terperinci: 1. Nilai piksel (px): Nilai piksel tetap dan lebarnya kekal tidak berubah tidak kira bagaimana resolusi skrin berubah. Contohnya: lebar: 300px; 2. Peratus (%): Peratusan lebar adalah relatif kepada lebar elemen induk. Contohnya: lebar: 50%; 3, unit em, dsb.

Apakah maksud lebar dalam iframe Apakah maksud lebar dalam iframe Sep 19, 2023 pm 12:00 PM

Lebar dalam iframe bermaksud menentukan lebar bingkai, yang boleh mengawal lebar iframe yang dipaparkan pada halaman. Nilai yang boleh diterima untuk lebar: 1. Nilai piksel tetap, width="300px", lebar bingkai akan sentiasa kekal tidak berubah, tidak kira bagaimana saiz tetingkap penyemak imbas berubah 2. Nilai peratusan, lebar="50%", lebar bingkai Ia akan dilaraskan secara adaptif mengikut lebar elemen induknya 3. Nilai automatik, width="auto", lebar bingkai akan dilaraskan secara adaptif mengikut lebar kandungannya.

jQuery dengan cepat mengalih keluar atribut ketinggian sesuatu elemen jQuery dengan cepat mengalih keluar atribut ketinggian sesuatu elemen Feb 27, 2024 pm 02:09 PM

jQuery ialah perpustakaan JavaScript yang digunakan secara meluas dalam pembangunan web Ia menyediakan pembangun dengan banyak kaedah mudah untuk memanipulasi dan memproses elemen halaman web. Dalam pembangunan sebenar, kita selalunya perlu mengendalikan atribut elemen halaman web Salah satu keperluan biasa ialah membuang atribut ketinggian elemen. Dalam artikel ini, kami akan memperkenalkan cara menggunakan jQuery untuk mengalih keluar atribut ketinggian elemen dengan cepat dan memberikan contoh kod khusus. Untuk mengalih keluar atribut ketinggian elemen, anda boleh menggunakan jQu

See all articles