blog.Ring.idv.tw

Articles

腦海中的橡皮擦 - A Moment to Remember

-=眼眶泛紅.強忍淚水=-

(影像出處有更詳細的介紹:腦海中的橡皮擦【A moment to remember】)

這真的是一部很讚的愛情催淚電影~ 和「藍色生死戀」韓劇相比~ 真的是有過之而無不及~

藍色生死戀」描述的是「癌症」~ 而「腦海中的橡皮擦」則是描述「阿茲海默症」~ 此病症會慢慢地遺忘掉記憶~ 就如同腦中的橡皮擦一般~ 慢慢地擦掉所有~

如果我小時候就看過這部電影的話~ 我想我現在應該是一位建築工~ 而不是學電腦的~ 哈~ ^^a

不多說了~ 我想在我的DVD架上~ 過不久就會多一片「腦海中的橡皮擦」了~

強力推薦放送給大家~ ^^ 不好看的話請來找我........ 的學弟~ ㄎㄎ~

2008-02-29 00:19:31 | Comments (5)

寒流來襲的好選擇 -「輕井澤鍋物」

昨天~ 寒流又來襲了~ 晚上約一約給它又跑去「輕井澤鍋物」~

不過實在有點誇張~ 我訂了晚上「8:15」分~ 結果去到那邊,一大堆人擠在櫃台前~

生意好到不行吧~ 服務生還請我們先在「外面」等... 的確~ 外面還是一大堆人在等位子~ 我也只好冷風颼颼地和學弟二個人在外面開講一下.. 而上圖就是人滿為患的證據~ 哈~

結果一直到「8:30」我們才得以進去大門裡~

不過有了前車之鑑(輕井澤鍋物 - 精燉麻辣豬肉燒鍋),這一次當然給它點「和風」來品嚐~ ^^v 讚啦~

2008-02-28 23:50:10 | Comments (5)

PHP 縮圖製作(Image Thumbnail) - GD Library

最近剛好需要用到一個縮圖技巧~ 所以我Google了一下~ 想找到PHP製作縮圖的方式~

而Google出來的結果發現到~ 使用官方所採用的GD libraryImageMagick 兩者較常被使用~

這裡我就直接用官方所採用的GD library來做~ 不過「聽說ImageMagick效率較好~ 有沒有人有相關的建議呢?分享一下唄~

PHP 縮圖製作(Image Thumbnail)

HTML - 上傳頁面

<form action="ImageHandler.php" method="post" enctype="multipart/form-data">
<input type="file" name="uploadfile"/>
<input type="submit"/>

ImageHandler.php - 縮圖處理細節封裝在ImageResize.php

下述程式是以縮圖後的尺寸為「100」當基礎,所以寬度和高度的尺寸會自動地照比例縮圖~ 如果您想要客製化更多的功能~ 可以自行擴充或改寫ImageResize.php

<?php
require_once 'ImageResize.php';

$ir = new ImageResize();

$ir->readImage($_FILES['uploadfile']['tmp_name']);

$ir->thumbnailImage(100);

$ir->writeImage($_FILES['uploadfile']['name']);

$ir->destory();
?>

ImageResize.php - 處理縮圖的ImageResize Class

<?php
/**
 * Date: 2008/02/28
 * Shen(http://blog.ring.idv.tw)
 */
class ImageResize
{
	private $src_image;
	private $src_width;
	private $src_height;
	private $dest_image;
	private $dest_width;
	private $dest_height;

	function __construct(){}
	public function readImage($imgpath)
	{
		$this->src_image = imagecreatefromjpeg($imgpath);
		$size = getimagesize($imgpath);	
		$this->src_width = $size[0];
		$this->src_height = $size[1];
	}
	public function thumbnailImage($size)
	{
		if($this->src_width > $this->src_height)
		{
			$this->dest_width = $size;
			$this->dest_height = ($this->src_height/$this->src_width)*$size;
		}else{
			$this->dest_height = $size;
			$this->dest_width = ($this->src_width/$this->src_height)*$size;
		}

		$this->dest_image = imagecreatetruecolor($this->dest_width,$this->dest_height);
		imagecopyresampled($this->dest_image,$this->src_image,0,0,0,0,$this->dest_width,$this->dest_height,$this->src_width,$this->src_height);
	}
	public function writeImage($imgpath)
	{
		imagejpeg($this->dest_image,$imgpath,100);
	}
	public function destory()
	{
		imagedestroy($this->src_image);
		imagedestroy($this->dest_image);
	}
}
?>

參考資源

PHP: Image - Manual

How to Resize an Image Using PHP - Image Resizing Script

2008-02-28 21:54:37 | Comments (11)

SWF Dump Tools

剛剛找到一個AIR : SWF dump tool,它是用Tamarin project中的「abcdump.as」來寫成的Adobe AIR應用,不過感覺上似乎沒有「swfdump」來得強大~

從「利用swfdump反組譯ActionScript 3.0」的一文中~ 其實「swfdump.exe」還是利用「Java」程式去執行的~ 為何如此說?我們可以看一下「swfdump」(shell script)的內容:

.....
java $VMARGS -jar "$FLEX_HOME/lib/swfdump.jar" "$@"

所以我將整個「swfdump」會用到的jar檔抓出來~ 並寫成一個批次檔來處理~ 這樣大家就不需要那麼麻煩還要抓原始檔然後再編譯等等的工作步驟了! ^^

批次檔內容

@java -jar "%~dp0swfdump.jar" %*

下載點:swfdump

下載後請直接解壓縮~ 然後將「c:\swfdump\bin」設定至「Path」的環境變數即可~

操作方式

swfdump -abc helloworld.swf

2008-02-26 14:38:39 | Add Comment

利用swfdump反組譯ActionScript 3.0

Open-Source Flex SDK project 提供了一個命令列的小工具,稱為:「swfdump」,我們可以用它來反組譯包含ActionScript 3.0的SWF檔案,不過要利用此工具之前~ 必須先做一些相關的處理。

swfdump建置步驟

Step 1. 請設置好你的Apache Ant,並設好「Path」環境變數。

Step 2. 確認你的「JAVA_HOME」環境變數已經指到你的JDK目錄夾位置。

Step 3. 請下載Flex SDK的原始碼,可參考「Flex 3 is Now Open Source !!」。

Step 4. 切換工作目錄至Flex SDK原始碼中的「trunk\modules\swfutils」,並輸入「ant」來編譯swfutils底下所有的Java程式並打包。

cd c:\flexsrc\trunk\modules\swfutils
ant

Step 5. 切換至「trunk\bin」,然後進行反組譯「helloworld.swf」。

(這裡我們用Flash CS3開發一個含「trace("Hello World");」的測試檔案)

cd c:\flexsrc\trunk\bin
swfdump -abc helloworld.swf

接著你就可以看到反組譯後的結果了~

…………………
   01 02 01 0A 0B 0A    function helloworld_fla:MainTimeline::helloworld_fla:frame1():
    maxStack:2 localCount:1 initScopeDepth:10 maxScopeDepth:11
    D0                       getlocal0     	
    30                       pushscope     	
    5D 04                findpropstrict	:trace
    2C 09                pushstring    	"Hello World"
    4F 04 01           callpropvoid  	:trace (1)
    47                       returnvoid    	
    0 Extras
    0 Traits Entries

    02 03 01 0A 0B 0F    function helloworld_fla:MainTimeline::helloworld_fla:MainTimeline():
    maxStack:3 localCount:1 initScopeDepth:10 maxScopeDepth:11
    D0                       getlocal0     	
    30                       pushscope     	
    D0                       getlocal0     	
    49 00                constructsuper	(0)
    5D 05                findpropstrict	:addFrameScript
    24 00                pushbyte      	0
    60 03                getlex        	helloworld_fla:frame1
    4F 05 02           callpropvoid  	:addFrameScript (2)
    47                       returnvoid    	
    0 Extras
    0 Traits Entries
…………………

Good luck! ^^

參考資源

Disassembling a SWF with swfdump

2008-02-25 23:18:22 | Comments (2)

Next Posts~:::~Previous Posts
Copyright (C) Ching-Shen Chen. All rights reserved.

::: 搜尋 :::

::: 分類 :::

::: 最新文章 :::

::: 最新回應 :::

::: 訂閱 :::

Atom feed
Atom Comment