小提醒:若您是以書面形式閱讀本報告,我們極度建議您轉為使用瀏覽器線上閱讀,並使用筆記型或桌上型電腦,以取得最佳的閱讀體驗。使用手機瀏覽排版可能會跑掉。
https://hackmd.io/@ruby0322/Hkaaoc8PF
系級與姓名 | 學號 |
---|---|
資管一顧寬証 | |
物理一黃聖哲 |
內容
利用學校計中提供的網頁空間,製作個人或所屬單位之網頁,並利用影像處理軟體合成影像或是利用類似MediaShow工具將多張相片合成一個視訊檔。
說明
網頁請使用框架的模式,可使用CSS、Flash、Java script…等
開發的工具不限定(可用SharePoint Designer、Dreamweaver…等)
以下二者選擇一項功能
(1) 利用圖層(Layer)功能合成數張照片,影像處理軟體的不限定(可用PhotoShop, PhotoImpact…等)
(2) 利用類似MediaShow工具將多張相片合成一個視訊檔(檔案不宜過大)
報告務必詳細 (包括開發時工具所使用的功能,在製作網頁、合成影像、製作幻燈影片時的構想,所遇到的問題,以及在此作業中的心得,若使用一些現成的模組或程式請務必附上參考時的網址)
這次選擇使用Heroku作為我們網頁的伺服器
首先需要安裝的軟體有
安裝好後要先在terminal輸入heroku login
指令,
並按照指示登入。
登入後,在工作目錄先初始化repository。
打開terminal輸入git init
,
再輸入git add .
最後輸入git commit -am.
這時就可以heroku git:remote -a "app名稱"
以將著個git repo綁訂到你的app
以上這些環境設置好後,
還有一些基本必備的檔案才可以讓app正常運行
準備完成就可開始做routing
首先我透過flask這個framework來搭建各路線(route)
完整程式碼如下:
import flask
app = flask.Flask(__name__)
@app.route('/')
def redirect_to_index():
return flask.redirect(flask.url_for('index'))
@app.route('/index/')
def index():
return flask.render_template('index.html')
@app.route('/ruby/')
def rubys_page():
return flask.render_template('ruby.html')
@app.route('/sage/')
def sages_page():
return flask.render_template('sage.html')
if __name__ == '__main__':
app.run()
值得注意的是因為flask本身對於工作目錄的整理方式有規定
例如:
如果沒有正確地整理檔案,可能造成檔案讀取失敗。
我們的工作目錄長這樣:
IDE: VSCode
Debug: live server(VSCode Extension)
在我們小組進行介面構想及設計時,我們受到近期流行的斜切割線風格影響。
我們認為利用斜直線將畫面一分為二,乾淨俐落且一點也不單調。
此外,分割線將畫面切成兩部分恰好與我們的組員數相符,
因此將我們的首頁設計為被一斜直線分為左右的版面,
兩側皆個代表我們中的一個組員。
左右兩側緊密接合,代表我們合作無間。
但割線的俐落也代表我們各司其職。
我們透過CSS做出Slanted Division
參考了以下影片
我們明白,一個網頁的外觀和諧與否,與配色有極大的關係。
然而,對於兩個二類組男生,選擇一組和諧的配色並非如此容易。
於是我們透過網路,參考了許多現成的色彩盤(Color Palette)。
最後透過觀摩,領悟了其中的精隨。
目前的網站首頁兩種配色(亮/暗),以及個人網頁主題色
都是由手動挑選出來的。
亮配色 左#e4ffff
右#fffff1
暗配色 左#2a2929
右#313336
主要色調 一#313336
二#2a2929
次要色調 一#ff7d27
二#ffffff
因為曾經在某網站上看過這樣的功能:可以透過開關切換主題色,
當時看到非常心動,因此藉由這次機會嘗試實踐。
首先遇到的問題是:按鈕的種類選擇,在HTML中,<input>
有這些種類。
我們認為以切換主題色為目的應該使用開關(Toggle Switch)最為適切。
但其中卻找不到開關這個種類,原本還因此考慮捨棄此選項。
經過一番搜尋,我們找到適合我們的工具–bootstrap。
透過以下程式碼,搭配bootstrap提供的階層樣式表(CSS),
就可以達到我們所期望的結果。
<label class="switch">
<input type="checkbox" id="switch">
<span class="slider round"></span>
</label>
呈現樣式
首先,當DOM物件載入完成後,在開關上新增一個EventListener
,
並綁定changeTheme
函式
片段程式碼如下
function main(event) {
if (localStorage.getItem("isBrightTheme") != null) {
isBrightTheme = localStorage.getItem("isBrightTheme");
} else {
isBrightTheme = true;
localStorage.setItem("isBrightTheme", isBrightTheme);
}
document.getElementById('switch')
.addEventListener('click', changeTheme);
document
.getElementById('switch').checked = !isBrightTheme;
}
window.addEventListener('DOMContentLoaded', main);
以下是changeTheme
函式
function changeTheme(event) {
isBrightTheme = !isBrightTheme;
if (isBrightTheme) {
document.getElementById('right').style.background = "#fffff1";
document.getElementById('left').style.background = "#e4ffff";
document.getElementById('right').style.borderLeft = "8rem solid #e4ffff";
let names = document.getElementsByClassName('name');
for (let i = 0; i < names.length; i++) {
names[i].style.color = "black";
}
} else {
document.getElementById('right').style.background = "#313336";
document.getElementById('left').style.background = "#2a2929";
document.getElementById('right').style.borderLeft = "8rem solid #2a2929";
let names = document.getElementsByClassName('name');
for (let i = 0; i < names.length; i++) {
names[i].style.color = "#cad5a7";
}
}
localStorage.setItem("isBrightTheme", isBrightTheme);
}
我們將目前的主題狀態儲存在全域變數isBrightTheme
,
並且在其更新後儲存至localStorage,
如此使用這下次回到網站,仍可沿用之前設定。
單單是展示一張照片,就是一門大學問。
我們希望透過最簡單卻又不單調簡陋的方式呈現我們的個人照。
首先我們希望照片是橢圓的,其次希望照片外緣能有一細框。
橢圓的實作相對簡單,只需要將border-radius
屬性設為50%
即可
片段程式碼(CSS)如下:
.img-border {
position: relative;
display: flex;
align-items: center;
justify-content: center;
border-radius: 50%;
height: 20.9rem;
width: 15.75rem;
background: #e3dee4;
opacity: .92;
-webkit-transition: all .3s ease-in-out;
margin-bottom: 2rem;
}
我們透過重疊兩個大小不一的橢圓Division製造出相框的感覺。
<div class="img-border">
<div id="right-img" class="img">
<img src="../static/images/sage_image_fliped.jpg" alt="Sage's Image">
</div>
</div>
透過CSS中的transition
屬性搭配hover
pseudo element,
達到此目的,以下為片段程式碼:
.img-border {
position: relative;
display: flex;
align-items: center;
justify-content: center;
border-radius: 50%;
height: 20.9rem;
width: 15.75rem;
background: #e3dee4;
opacity: .92;
-webkit-transition: all .3s ease-in-out;
margin-bottom: 2rem;
}
.img-border:hover {
box-shadow: 0 0 2px 1px rgba(0, 140, 186, 0.5);
-webkit-transform: scale(1.1);
}
對於個人網站的風格我們思考了許久,
也嘗試了各種不同的風格,
最後決定沿用首頁的簡約風格,
讓使用者整體的感受一致,不會有突兀的感覺。
在製作首頁遇到配色問題後,
我看了許多有關配色及字體排版等等的教學影片,
這次算是把所學完整的用了出來,
透過簡單的黑灰色調打底,
將想要凸顯的文字或物件塗上橘色。
散發出一種低調卻有質感的氣息。
在個人網站的第三、四部分,
我使用了經過模糊處理(透過PS的高斯模糊)的真實風景照。
利用與前兩部分之鮮明對比,
吸引使用者注意,
如此可以促使使用者認真觀賞作品。
這個相對簡單,片段程式碼如下:
<div class="primary-button">
<a href="#info">See More</a>
</div>
側邊固定的導航欄,
放置了整個網站四部分的連結。
<div class="fixed-side-navbar">
<ul class="nav flex-column">
<li class="nav-item"><a class="nav-link" href="#home"><span>Intro</span></a></li>
<li class="nav-item"><a class="nav-link" href="#info"><span>Info</span></a></li>
<li class="nav-item"><a class="nav-link" href="#works"><span>Works</span></a></li>
<li class="nav-item"><a class="nav-link" href="#our-story"><span>Our Story</span></a></li>
</ul>
</div>
fixed-side-navbar
的CSS原始碼:
.fixed-side-navbar {
position: fixed;
top: 50%;
right: 0;
z-index: 99999;
margin-top: -100px;
text-align: right;
padding: 30px 0;
-webkit-transition: all .3s;
transition: all .3s;
}
透過jQuery的Animate使得Scroll變得順暢自然
$(document).ready(function(){
// Add smooth scrolling to all links
$(".fixed-side-navbar a, .primary-button a").on('click', function(event) {
// Make sure this.hash has a value before overriding default behavior
if (this.hash !== "") {
// Prevent default anchor click behavior
event.preventDefault();
// Store hash
var hash = this.hash;
// Using jQuery's animate() method to add smooth page scroll
$('html, body').animate({
scrollTop: $(hash).offset().top
}, 800, function(){
// Add hash (#) to URL when done scrolling (default click behavior)
window.location.hash = hash;
});
}
});
});
在這座旋轉木馬的過程中,我發現因為我們有些作品尺寸較大,
導致只顯示部分圖像,原本透過直接在img
tag加上height: 62rem;
的style,但發現其結果如我原本預想不一。
最後透過用一個div
包住img
,在div
加上heightL: 62rem;
的style,
並且在img
加上height: 100%
的style就完美地解決了這個問題。
我參考了bootstrap的官方docs
.tabgroup-title {
background-color: rgba(0, 0, 0, 0.5);
color: #fff;
padding: 25px;
border-bottom-right-radius: 10%;
border-bottom-left-radius: 10%;
backdrop-filter: blur(5px);
}
.tabgroup-description {
background-color: rgba(0, 0, 0, 0.5);
color: #fff;
padding: 25px;
border-radius: 30%;
backdrop-filter: blur(5px);
}
作者:顧寬証
Adobe Photoshop
透過影像編輯,
將不可能做到的事化為可能。
我認為影像編輯,
是一個滿足人類難以達成的慾望的好管道。
在台大駕駛F35?
也許這輩子做不到了…
但我也能透過影像編輯,
使我的奇葩心願在自己的世界被實現。
我將乘坐台大號F35衝向世界,如入無人之境,屢戰屢勝。
此作品有全程錄影
製作過程紀錄影片如下
Learn More →
影片連結
作者:顧寬証
Adobe PhotoShop
轟隆隆 隆隆隆隆 衝衝衝衝 拉風
引擎發動 so come on 引擎發動 so come on
一瞬間 踩下油門 催乎盡磅(台) 乘風 衝 衝
讓窗外的
風 吹動每一個毛孔 我是今夜 最 稀有的品種
讓 看到的人以為是夢 還沒醒來 就已經無影無蹤
風 敲醒每一個面孔 我是明天 被 讚嘆的驚悚
讓 看到的人全部感動 零到一百K only四秒鐘
卜學亮(阿亮)《超跑情人夢》官方MV (Official Music Video)
我想像中的超跑情人夢!!!
這是當初聽太多超跑情人夢,
被洗腦後,作夢夢到的畫面,
我盡我所能地重現了腦中的畫面:
情人坐在超跑上回頭看向我…
然後就開始唱超跑情人夢了…
這張相對簡單,只是把一個女性P在車上,
再用橡皮擦把被擋住的身體部分擦掉。
最後加上一些漂亮字體的字。
作者:顧寬証
Adobe Photoshop
透過倒轉大片蔓延的雲海形成無邊的烏雲,
搭配上放大過後的雲海作為兇猛的波濤,
整體的黑灰色調加上閃電在船後劃下,
使得飛行荷蘭人氣勢磅礡且格外陰暗。
雖然環境險惡,他卻堅持前行。
可以說是我的目前的境遇寫照:
黑暗無邊無境,大浪永無止盡,
看不清東西南北,數不盡未知凶險,
仍依然勇往直前,追求卓越,勇敢追夢。
天空->雲海倒轉+暗色濾鏡
海量->雲海放大+暗色濾鏡
荷蘭人的船->船+暗色濾鏡
閃電->加亮+手繪
作者:黃聖哲
Adobe Photoshop
疲憊的身軀從總圖自習室走出,無意間抬起頭,映入眼簾的不是孤寂的黑夜,而是漫天繁星閃爍,在這不斷努力的我們,為的就是在將來的某一天,能像夜空中最亮的星一樣,盡情閃爍著耀眼的光芒。
初步構思後,在網路上抓了夜空和台大總圖(白天)兩張圖片。
先匯入總圖照片作為基底,再匯入夜空作為第二個圖層,
調整至適當位置並將夜空隱藏,將總圖的天空用區域逐步選取的方式裁切掉,
後與夜空圖層疊合。
其後是將總圖原本白天的色調調暗,利用顏色查詢,
在3DLUT檔案載入NightFromDay.CUBE,
再將圖層色彩增值,就可以營造出夜晚的色調。
作者:黃聖哲
Adobe Photoshop
大家都知道派大星住在海中的比奇堡,但此圖中的派大星卻站在一望無際的沙漠之中,其中看似充斥矛盾,實則隱含著深意,水生動物派大星勇於跳脫舒適圈,以開朗樂觀的心態面對各種挑戰,效仿他積極向上的精神吧!
初步構思後,在網路上抓了沙漠和派大星兩張圖片。
先匯入沙漠照片作為基底,再匯入派大星作為第二個圖層,
將派大星以區域逐步選取的方式將派大星原圖的背景去掉,
將兩圖疊合。
另外使用畫筆功能,以RGB數值配出適當顏色並調整適當粗度,
在圖片右上方點出太陽的效果,最後再細部調節整體圖片色調。
先前有淺淺地碰過web programming,但鮮有真正的實作機會。
因為第一沒有動力,第二缺乏內容。
但這次多媒體製作的期中報告,給了我實作的動機,也給了我們內容。
我很高興能有這個機會與體驗,讓我把先前所學實際應用在自己的網頁上。
雖然說看過不少前端的教學影片,但是紙上談兵還是無法與實作相比擬。
這次的期中報告,讓我發現自己許多技術上的盲點。
有些漏學,有些忘了,也有些無法變通。
雖然網頁設計幾項常見的Component種類也不多,
但要如何透過這些零件組裝成一個吸睛的網頁確實是一大學問。
我趁著這次期中報告製作期間,大量觀摩優秀的網頁,也得出不少心得。
雖然還是無法寫得像前端工程師一樣,但我確定此次的期末報告,
讓我有了大幅的進步,不僅是在技術上,美感上也小有增進。
雖然這次期中報告中的內容基本上都是邊學邊做,
一開始甚至只能用複製貼上的,到最後進步至能夠融合自己的想法,
並用自己喜歡的方式重現他人的程式碼。
我認為我在這過程中進步非常多,理由有三
一、有效率且精準地查找想要的資料也是一門學問,
這次寫網頁過程中遇到的問題大概有數十個,
我得到很多實際訓練自己查資料以及過濾無關自料的能力。
二、大多數情況,他人的程式碼直接複製貼是不一定會有效的,
常見的原因有:css class未定義、未import style sheet(例如bootstrap)、
程式碼架構不同導致物件被parent element的屬性影響等等。
為了能夠有效利用他人的程式碼,我們必須學習解決這些問題。
三、雖然許多component都是有現有程式碼,很多只需稍作修改即可使用,
但因為我們沒有使用完整模板,而是到處蒐集喜歡的component,
並自己設計再組裝。
如何不突兀地且無違和地組裝來源不同的物件也是一個課題。
最後,這次的報告製作的過程也算是比先前所有經驗來的穩重,
我們在學期初就有先做了一些簡單的紙本規劃及spec file等等,
雖然有些feature在實作過程中才發現能力不足,
但大體上的架構都與先前計畫的非常接近。
製作過程中因為有事前的計畫而不會毫無頭緒地亂做,
讓我明白事前規劃的執行效率是肯定比邊做邊想來的高。
我們也體驗到一個專案從口頭討論到紙本計畫,
到最後實做出來的整個流程。
這次的影像編輯作業也讓我對PS技巧有進一步的熟悉機會,
可以透過影像編輯,將自己的想法具現化,我覺得是一件很快樂的事。
在這次網頁製作、合成修圖的練習中,真的費了我們好大一番功夫,不過也因為如此,我得到了很多有趣的收穫,在網頁製作方面,我們自行架設網頁於外部伺服器,並以html、CSS、Javascript等語言工具編寫網站,起初我們花了一段時間在構思理想的網頁樣貌,初步規劃後,開始靠不斷網路搜尋的方式一點一點的學習需要的技術,這個漫長的學習過程讓我領悟到學會搜尋的能力真的非常非常重要,我們並不需要也不可能會所有的東西,然而,若是有足夠的搜尋能力與技巧,每次遇到問題我們總能找出適當的解決方法,我認為這才是最重要的。
另外在合成修圖方面我們也是第一次接觸,從什麼都不懂到漸漸學會使用修圖工具,當中也學到了很多的新知識,我是使用Photoshop來合成修圖,靠著一步步在網路上爬文、看教學影片,現在終於對於圖層疊合、裁切、亮暗對比、調色等等都有一定的概念基礎。
整體感覺下來這次做的東西挺扎實的,製作過程中真的學不少,多媒體製作果然十分有趣。