2009年6月11日

[PHP]讀取JPEG圖檔dpi

讀取JPEG圖檔dpi

function get_dpi($filename){

// open the file and read first 20 bytes.
$a = fopen($filename,'r');
$string = fread($a,20);
fclose($a);

// get the value of byte 14th up to 18th
$data = bin2hex(substr($string,14,4));
$x = substr($data,0,4);
$y = substr($data,4,4);
/* $x,$y: 01 2C = 300dpi ; 00 48 = 72dpi */
return array(hexdec($x),hexdec($y));

}

程式出處: http://sandalian.com/php/get-dpi-value-of-an-image-using-php.html
JPEG結構說明: http://bytes.com/groups/php/5948-dpi-php-gd
JPEG結構&DPI說明: http://apptools.com/examples/dpi.php

2009年3月21日

[php]將Unicode轉換為Big5,缺字以&#xxxxx編碼顯示

將UTF-16 or UTF-8 轉換為Big5,無法轉換的字以 &#xxxxx 的編碼代替(參考網路文章測試後再修改之~):
* php 需安裝 mbstring模組: php_mbstring.dll

//轉換編碼時無法轉換的字元,設定應用何種方式顯示(預設: ?、none: 無、long: U+xxx)
mb_substitute_character("long");
$file_cont=convertUnicodeNotation(mb_convert_encoding($file_cont, 'BIG5', 'UCS-2LE'));
//echo convertUnicodeNotation(mb_convert_encoding($data, 'BIG-5', 'UTF-8'));

//將 U+79C3 之類的編碼,轉換為&#xxxxx => '&#'.intval('79C3',16)
function convertUnicodeNotation($str) {
if (eregi('U\+([0-9A-F]{4})',$str,$regs))
{ return convertUnicodeNotation(str_replace($regs[0], '&#'.intval($regs[1],16).';', $str));
}
return $str;
}

2009年3月10日

[MySQL]Can't open file: 'xxx.MYI'. (errno: 144)

Can't open file: 'xxx.MYI'. (errno: 144)
OS下命令: myisamchk -f (table所在路徑/)xxx.MYI 即可修復

2009年2月10日

[Win]清除本機DNS cache

【問題】已至DNS server更動了domain對應的IP,Client端卻遲遲無法找到更改過的IP?
【解決方式】於命令列輸入 ipconfig /flushdns ,可清除Client端電腦內的DNS對應cache。
【注意】/flushdns 選項只能用於執行 Windows 2000、Windows XP 或 Windows Server 2003 作業系統的電腦上。

2009年1月13日

讀取UTF-8的網頁卻出現一片空白或亂碼?

問題】瀏覽器讀取網頁時,畫面總是一片空白或亂碼,需更改瀏覽器的編碼方式、重新整理,
才會變正常?
解決方式
  1. 確認程式檔案是否儲存為正確的編碼?如UTF-8。
  2. 確認檔案開頭是否已加入正確的metadata標籤:
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    此行需放在「<title>網頁標題</title>」之前
  3. 查看Apache的httpd.conf設定檔內,是否有「AddDefaultCharset」的參數設定?
    若有請設為null:「AddDefaultCharset null
原因】(以下為轉貼)
UTF-8 是三個位元組一個漢字,而普通的 BIG5 是兩個,
結果把 UTF-8 當成 BIG5 解析的時候會出現一個半漢字的情況,
而那半個漢字會和 </title> 的 < 結合成一個亂碼字,
導致 IE 無法讀完<title>之前有連續的奇數個全形字符。

如果使用的是Mozilla、Mozilla Firefox、Sarafi等其他目前流行的瀏覽器,通常就不會有這樣的問題。
如果您在Windows作業系統上,使用Internet Explorer瀏覽器的話,往往會出現這樣的狀況:
在瀏覽使用UTF-8編碼製作的中文網頁時,瀏覽器並不能夠自動偵測網頁的編碼方式,
從原本預設的語系編碼(例如Big5正體中文等),切換成改以UTF-8編碼,
結果畫面上就是一片空白,什麼都沒有,即使在網頁當中,
已經加上了特別標明內文語系的metadata標籤:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 也還是一樣。

如果說,在<head>當中,排在最前面的是像網頁標題<title></title>標籤,
當中就出現了UTF-8中文,就很容易造成在瀏覽器中畫面一片空白,
或許是因為Internet Explorer會一開始就用預設的語系解讀、分析網頁,
而在標題的地方遇到UTF-8字元,就解讀錯誤,而不會繼續往下讀,
讀到meta標籤,才讀出這個網頁是以UTF-8編碼。
所以,</head>的部份,把"Content-Type"放在最前面,便可以解決這樣的問題了。