ホームページ バックエンド開発 PHPチュートリアル 写真に装飾を加えるPHP版メイクアッププログラム

写真に装飾を加えるPHP版メイクアッププログラム

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

写真に装飾を加えるPHP版メイクアッププログラム

誰もが携帯電話でメイクアップ アプリをプレイしたことがあるのではないでしょうか

つまり、写真を処理し、装飾を追加して、誰もが面白く楽しめる写真を生成します

?

?

?

この記事で使用されている主なテクノロジーは次のとおりです

1.jquery ドラッグ&ドロップ技術

2.PHP で Json データを変換

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="写真に装飾を加えるPHP版メイクアッププログラムements/bowtie.png" id="obj_1"    style="max-width:90%" alt="写真に装飾を加えるPHP版メイクアッププログラム">
        </div>
        <div class="obj_item">
            <img class="ui-widget-content lazy" src="/static/imghw/default1.png" data-src="写真に装飾を加えるPHP版メイクアッププログラムements/mus1.png" id="obj_2"    style="max-width:90%" alt="写真に装飾を加えるPHP版メイクアッププログラム">
        </div>
        <div class="obj_item">
            <img class="ui-widget-content lazy" src="/static/imghw/default1.png" data-src="写真に装飾を加えるPHP版メイクアッププログラムements/beard.png" id="obj_3"    style="max-width:90%" alt="写真に装飾を加えるPHP版メイクアッププログラム">
        </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>
ログイン後にコピー

?csssを採用

#content{
    position:r写真に装飾を加えるPHP版メイクアッププログラムative;
    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;
}
ログイン後にコピー

それから、ドラッグされた要素と画像の 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:r写真に装飾を加えるPHP版メイクアッププログラムative;
    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:r写真に装飾を加えるPHP版メイクアッププログラムative;
}
.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/canc写真に装飾を加えるPHP版メイクアッププログラム.png) no-repeat top left;
    opacity:0.5;
    cursor:pointer;
}
a.remove:hover{
    opacity:1.0;
}
ログイン後にコピー

?

アクセサリ要素は json データに格納されます

var data = {
    "images": [
        {"id" : "obj_0" ,"src" : "background.jpg", "width" : "640", "height" : "480"}
    ]
};
ログイン後にコピー

? さらに、要素を拡大/縮小したり、ドラッグしたりすることもできます

$('#objects img').resizable({
    handles : 'se',
    stop    : resizestop
}).parent('.ui-wrapper').draggable({
    revert  : 'invalid'
});
ログイン後にコピー

?

$('#background').droppable({
    accept  : '#objects div', /* accept only draggables from #objects */
    drop    : function(event, ui) {
        var $this       = $(this);
        ++count_dropped_hits;
        var draggable_写真に装飾を加えるPHP版メイクアッププログラムem = ui.draggable;
        draggable_写真に装飾を加えるPHP版メイクアッププログラムem.css('z-index',count_dropped_hits);
        /* object was dropped : register it */
        var objsrc      = draggable_写真に装飾を加えるPHP版メイクアッププログラムem.find('.ui-widget-content').attr('src');
        var objwidth    = parseFloat(draggable_写真に装飾を加えるPHP版メイクアッププログラムem.css('width'),10);
        var objheight   = parseFloat(draggable_写真に装飾を加えるPHP版メイクアッププログラムem.css('height'),10);
 
        /* for top and left we decrease the top and left of the droppable 写真に装飾を加えるPHP版メイクアッププログラムement */
        var objtop      = ui.offset.top - $this.offset().top;
        var objleft     = ui.offset.left - $this.offset().left;
 
        var objid       = draggable_写真に装飾を加えるPHP版メイクアッププログラムem.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;
        }
        写真に装飾を加えるPHP版メイクアッププログラムse{
            /* 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_写真に装飾を加えるPHP版メイクアッププログラムem.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;
                }
            });
        }
    }
});
ログイン後にコピー

?以下は全体的な 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>
ログイン後にコピー
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

CSS を使用して要素の背景の回転アニメーション効果を実現する方法 CSS を使用して要素の背景の回転アニメーション効果を実現する方法 Nov 21, 2023 am 09:05 AM

CSS を使用して要素の回転背景画像アニメーション効果を実装する方法 背景画像アニメーション効果は、Web ページの視覚的な魅力とユーザー エクスペリエンスを向上させることができます。この記事では、CSS を使用して要素の背景の回転アニメーション効果を実現する方法を紹介し、具体的なコード例を示します。まず、背景画像を用意します。太陽や扇風機など、好きな画像を使用できます。画像を「bg.png」という名前で保存します。次に、HTML ファイルを作成し、ファイルに div 要素を追加して、次のように設定します。

htmlの幅とは何を意味するのでしょうか? htmlの幅とは何を意味するのでしょうか? Jun 03, 2021 pm 02:15 PM

HTML5 では、width は幅を意味します。width 属性は要素のコンテンツ領域の幅を定義します。コンテンツ領域の外側に内側のマージン、境界線、および外側のマージンを追加できます。「要素 {width: value}」を設定するだけで済みます。要素。

Snapdragon 7s Gen 2、10.6インチディスプレイ、Lumiaデザインを搭載したミッドレンジタブレットとしてHMD Slate Tab 5Gがリーク Snapdragon 7s Gen 2、10.6インチディスプレイ、Lumiaデザインを搭載したミッドレンジタブレットとしてHMD Slate Tab 5Gがリーク Jun 18, 2024 pm 05:46 PM

Skyline とともに、HMD Global は Nokia Lumia 920 スタイルのミッドレンジ スマートフォンを 7 月 10 日に発表する予定です。リーカー @smashx_60 からの最新情報によると、Lumia のデザインは間もなくタブレットにも使用される予定です。これは c になります

写真家がAI画像コンテストに本物の写真を投稿、3位に入賞してから語る 写真家がAI画像コンテストに本物の写真を投稿、3位に入賞してから語る Jun 16, 2024 pm 06:46 PM

2024 年の 1839 Awards によって開催されたコンテストの 1 つは、提出物がカメラで作成されたものではなく、人工知能によって生成されるという点で特別なものでした。マイルズ アストレイの代わりに好奇心を刺激したのはこのコンテストでした。

CSS の寸法プロパティの詳細な説明: 高さと幅 CSS の寸法プロパティの詳細な説明: 高さと幅 Oct 21, 2023 pm 12:42 PM

CSS 寸法プロパティの詳細な説明: 高さと幅 フロントエンド開発において、CSS は強力なスタイル定義言語です。その中で、高さと幅は 2 つの最も基本的な寸法属性であり、要素の高さと幅を定義するために使用されます。この記事では、これら 2 つのプロパティを詳細に分析し、具体的なコード例を示します。 1. height 属性 height 属性は、要素の高さを定義するために使用されます。ピクセル、パーセンテージ、または

CSSで幅の値を表現するにはどのような方法がありますか? CSSで幅の値を表現するにはどのような方法がありますか? Nov 13, 2023 pm 05:47 PM

メソッドには、ピクセル値、パーセンテージ、em 単位、rem 単位、vw/vh 単位、auto、fit-content、min-content、max-content が含まれます。詳細な紹介: 1. ピクセル値 (px): ピクセル値は固定されており、画面解像度がどのように変化してもその幅は変わりません。例: width: 300px; 2. パーセント (%): 幅のパーセントは、親要素の幅を基準にしています。例: width: 50%; 3、em 単位など。

iframeの幅は何を意味しますか iframeの幅は何を意味しますか Sep 19, 2023 pm 12:00 PM

iframe の幅は指定されたフレームの幅を意味し、ページに表示される iframe の幅を制御できます。幅の許容値: 1. 固定ピクセル値、width="300px"、ブラウザ ウィンドウのサイズがどのように変化しても、フレームの幅は常に変更されません; 2. パーセンテージ値、width="50%"、フレームの幅 親要素の幅に応じて適応的に調整されます; 3. 自動値、width="auto"、フレームの幅はコンテンツの幅に応じて適応的に調整されます。

jQuery は要素の高さ属性を迅速に削除します jQuery は要素の高さ属性を迅速に削除します Feb 27, 2024 pm 02:09 PM

jQuery は Web 開発で広く使用されている JavaScript ライブラリであり、開発者に Web ページ要素を操作および処理するための便利なメソッドを多数提供します。実際の開発では、Web ページ要素の属性を操作する必要があることがよくありますが、一般的な要件の 1 つは、要素の height 属性を削除することです。この記事では、jQueryを使って要素の高さ属性を素早く削除する方法と具体的なコード例を紹介します。要素の高さ属性を削除するには、jQu を使用できます。

See all articles