2010年9月15日 星期三

GIMP 應用 雲霧效果 與行星背景 圖案 製作

GIMP 是一個免費的影像處理軟體,可以到官方網站下載

我這裡參考了一個教學的blog GIMP基礎功與範例教學

以下是我自己的步驟摘要


1. 建立新的圖片,這裡長寬設為512 ,但不是必要




2. 使用 濾鏡 功能 產生 隨機的地圖或雲狀圖形, 濾鏡->描繪->雲朵-> Solid Noise

注:
Difference Clouds 也是相同效果,但會根據背景圖案而產生不同的顏色,
Solid Noise 產生的都是灰階的圖案




3. 可鋪排打勾,將圖片貼到球形的物件就會密合,
不同的屬性可以產生不同的圖案




4. 選擇漸層的顏色 , 顏色 -> 映射 -> Gradient Map



5. 將顏色打在上面, 顏色-> 映射 ->




6. 顏色改變後的效果



7. 接下來是要產生雲的效果,首先要新增一個圖層叫cloud 好了



8. 顯示圖層, 有眼睛的圖案就表示現在會顯示的圖層,這裡先把底圖顯示關掉,只顯示cloud那層







9. 使用 濾鏡 功能 在 cloud 這圖層 產生 隨機的雲狀圖形, 濾鏡->描繪->雲朵-> Solid Noise





10. 設定透明度, 圖層 -> 透明度 -> 色彩轉為透明




11. 將黑色轉為透明




12. 含有雲效果的圖形

2010年9月7日 星期二

C# Code Snippet 功能

# Code Snippet 就是將定義好得程式碼結構,直接插入在程式中,
舉例來說 , 在程式碼中 , 滑鼠右鍵 , 選擇 Insert Sniooet ,就可以將 do while 等 插入在程式碼中







# 若要自行定義的話 可以使用 像 Snippet Editor 的工具

#可以參考 MS 的定義http://msdn.microsoft.com/en-us/library/9bt0w6h6%28VS.80%29.aspx

2010年8月30日 星期一

轉貼 FileUpload google app engine java(图片上传实例demo)

google appengine 可以用來儲存相當多的資料,不同於文字,若要儲存圖片的話就比較麻煩一些


以下轉貼自 http://mimaiji.appspot.com/article?method=view&id=9001


程式碼簡單分成四個部份

1. 圖片物件 Photo.java



import javax.jdo.annotations.IdGeneratorStrategy;
import javax.jdo.annotations.IdentityType;
import javax.jdo.annotations.PersistenceCapable;
import javax.jdo.annotations.Persistent;
import javax.jdo.annotations.PrimaryKey;

import com.google.appengine.api.datastore.Blob;


@PersistenceCapable(identityType = IdentityType.APPLICATION,detachable="true")
public class Photo {

@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Long id;

@SuppressWarnings("unused")
@Persistent
private String photoID;


@SuppressWarnings("unused")
@Persistent
private Blob photoO;


public Photo(Blob ObjBlob)
{
this.photoO = ObjBlob;
}



public Blob getPhoto() {
return this.photoO;
}

public Long getId() {
return this.id;
}


}






2. 資料存取物件 PhotoDao.java





import java.util.List;

import javax.jdo.PersistenceManager;
import javax.jdo.Query;

public class PhotoDao {
private static PhotoDao _instance = null;

public static PhotoDao getInstance() {
if (_instance == null) {
_instance = new PhotoDao();
}
return _instance;
}

public String insertPhoto(Photo photo) {
PersistenceManager pm = PMF.get().getPersistenceManager();
try {
pm.makePersistent(photo);
} finally {
pm.close();
}
return photo.getId().toString();
}


public Photo getById(Long id) {
PersistenceManager pm = PMF.get().getPersistenceManager();
Query query = pm.newQuery(Photo.class);
query.setFilter("id == idParam");
query.declareParameters("Long idParam");
List photo = null;
try {
photo = (List) query.execute(id);
if (photo.isEmpty()){
return null;
}else{
return (Photo) photo.get(0);
}

} finally {
query.closeAll();
}
}
}





3. PhotoServlet.java, Servlet 的設定,
3-1.這個例子要 import Apache 的 "
commons-fileupload" 和 "commons-io"
3-2. 下載完解壓縮, eciplse 專案中 加入 external jar, 如圖


3-3. 兩個 jar 要放在 \war\lib 中

3-4. code




import java.io.IOException;
import java.io.InputStream;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.FileItemIterator;
import org.apache.commons.fileupload.FileItemStream;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.io.IOUtils;

import com.google.appengine.api.datastore.Blob;

public class PhotoServlet extends HttpServlet{
/*display image*/
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException {
String id = req.getParameter("id");
Photo photo = PhotoDao.getInstance().getById(Long.parseLong(id));
Blob b = photo.getPhoto();
resp.setContentType("image/jpeg;charset=utf-8");
resp.getOutputStream().write(b.getBytes());
resp.getOutputStream().close();
}
/*upload image and add to datastore*/
public void doPost(HttpServletRequest req, HttpServletResponse resp)
throws IOException, ServletException {
ServletFileUpload upload = new ServletFileUpload();
FileItemIterator iterator = null;
try {
iterator = upload.getItemIterator(req);
} catch (FileUploadException e) {
e.printStackTrace();
}
try {
while (iterator.hasNext()) {
FileItemStream item = iterator.next();
InputStream stream = item.openStream();
if (item.isFormField()) {
// Handle form field
} else {
Blob bImg = new Blob(IOUtils.toByteArray(stream));
Photo photo = new Photo(bImg);
String pid = PhotoDao.getInstance().insertPhoto(photo);
req.setAttribute("Pid", pid);
resp.getWriter().write("Success "+ photo.getId());
}

}
} catch (FileUploadException e) {
e.printStackTrace();
}

}

}





4. 在 web.xml 設定 servelt 的路徑






<servlet>
<servlet-name>PhotoServlet</servlet-name>
<servlet-class>ppp.com.PhotoServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>PhotoServlet</servlet-name>
<url-pattern>/PhotoServlet</url-pattern>
</servlet-mapping>




附註: 要將資料抓到程式中的話
可以利用 HTTP GET 的方式,來取得圖片的 Stream


例如 C# 為例將資料存成 BitmapImage


private void GetHTTPRequest(string URL)
{
/// try send message to the web, if success show that the connect correct
try
{
/// Create the request obj
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(URL);

/// Set values for the request back
req.Method = "GET";

BitmapImage Bi = new BitmapImage();

Bi.BeginInit();

/// Set Bi source from MemoryStream
Bi.StreamSource = req.GetResponse().GetResponseStream();

Bi.EndInit();

IMG.Source = Bi;

}

catch{
Console.WriteLine("Error");
}
}

WPF 教學網站心得摘要 lesson 25-28

看完 微軟所提供的教學影片 所紀錄下來的心得摘要

網址
http://msdn.microsoft.com/zh-tw/netframework/cc963622.aspx

# 25 3D 繪圖 #3 – 3D材質處理技巧

1. 材質設定的範例,例如漸層、圖片(Imagebrash)


2. 內建3D 模型介紹

a. Sphere3D ,圓球體

b. Cylinder3D,圓柱體

c. Cone3D 圓錐體


# 26 3D 繪圖 #4 – 攝影機運鏡技巧

1. Position,攝影機座標,三維位置,攝影機位置
2. LookDirection,看得方向 ,相對作標
3. Updirection,法向量,三維
4. FieldofView,觀景窗角度,有點像鏡頭遠近
5. FarPlaneDistance, 最遠可視距離,小->近
6. NearPlaneDistance, 最近可視距離


# 27 3D 繪圖 #5 – 那是什麼光? 3D 光源使用技巧

1. 光源類型
a. AmbientLight (環繞光源),環境光
b. DirectionLight(方向性光源),太陽光
c. PointLight (點光源),燭光
d. SpotLight (聚光燈光源),聚光燈,手電筒

2. 常用屬性
a. Position 光源
b. Color 顏色
c. Diretcion 方向(PointLight 沒有這個設定)

3. PointLight 特殊光的範圍
Range 可以設定光可以照到的距離

4. SpotLight 特殊光的範圍
a. InnerConeAngle
b. OuterConeAngle

5. 宣告兩個 ModelView3D 可以同時照兩種光


# 28 3D 繪圖 #6 – 神奇的 3D 動畫

1. 控制攝影機的角度動畫
操作 Viewport3D.camera.PerpectiveCamera
的 position

2. 直接控制 Viewport3D.Transform

範例是 rotation,要設在 定義茶壺的那個Viewport3D,
中的 AxisAngleRoation3D, 旋轉 x軸

3. 若有兩個以上的動畫設定,要使用Transform3DGroup

2010年8月24日 星期二

Eclipse 中文註解

在 Eclipse 中 寫程式的話, 若想是用 中文的註解 就會出現 MS950 ... 的 錯誤訊息。


以下是在 Ecpipse 3.4.2 的設定方法
1. 選擇專案


2. Edit-> SetEncoding


3. 設定格式 為 utf-8




可以參考

http://www.wretch.cc/blog/pon24/13729920

或 google 一下 eclipse ms950 就可以找到相關文章