❶ php裁剪 動態裁剪框,要求生成固定大小的圖片
<?php
$sourcefile = 'x.jpg';
#目標寬度
$newwidth = 150;
#目標高度
$newheight = 120;
#目標比例
$newbili = $newwidth / $newheight;
#源圖片寬高
list($width, $height) = getimagesize($sourcefile);
if($width / $height > $newbili){
#原圖較長
$w = $width - $newbili * $height;
$h = $height;
$x = ($width - $w) / 2;
$y = 0;
}else{
#原圖較寬
$w = $width;
$h = $height - $newbili * $width;
$x = 0;
$y = ($height - $h) / 2;
}
$source = imagecreatefromjpeg($sourcefile);
$thumb = imagecreatetruecolor($newwidth, $newheight);
imageresized($thumb, $source, 0, 0, $x, $y, $newwidth, $newheight, $w, $h);
imagejpeg($thumb, "a.jpg");
註:此程序未考慮原圖比目標圖片小的情況
❷ 為什麼我使用php的imagerectangle()函數繪制的矩形邊框會是這個樣子
程序是從0開始計算的,樓主畫布只有100*100,
此處
imagerectangle( $image, 0, 0, 100, 100, $red );
改成
imagerectangle( $image, 0, 0, 99,99, $red );
試一試
❸ 用php寫一個簡單登錄界面,怎麼給它加入一張背景圖片啊,用div框該怎麼弄,或者其他的方法
背景圖像載入很簡單,你只需要做以下幾步即可(假設你的登陸界面對話框類名叫「CLoginDlg」):
(1)菜單「Insert」->"Resource",選擇Bitmap,然後點「Import...」,選擇你的背景圖像,然後假設該資源ID為「IDB_BITMAP1」;
(2)在LoginDlg.h下聲明一個CBitmap m_BKbitmap;
(3)在LoginDlg.cpp的構造函數中:m_BKbitmap.LoadBitmap(IDB_BITMAP1);
(4)在LoginDlg.cpp的OnPaint()函數中寫上:
void CLoginDlg::OnPaint()
{
CPaintDC dc(this); // device context for painting
if (IsIconic())
{
SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
// Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
BITMAP bm;
CRect rect;
CDC dcMem;
m_BKbitmap.GetBitmap (&bm);
GetClientRect(&rect);
dcMem.CreateCompatibleDC (&dc);
CBitmap *oldbitmap=dcMem.SelectObject (&m_BKbitmap);
dc.BitBlt (0,0,bm.bmWidth ,bm.bmHeight ,&dcMem,0,0,SRCCOPY);
dcMem.SelectObject(oldbitmap);
CDialog::OnPaint();
}
}
你的問題就OK了。
關於按鈕控制項顯示圖片,建議你可以下載一個CButton的繼承類,什麼「CButtonST」啊、「CBtnST」啊、「CDlgShadeButtonST」啊,自己手寫的話不劃算,有很多現成的控制項類,都寫的非常好,完全可以拿來為我們所用。