本文目錄一覽:
php求助圖片縮放裁切問題
這段代碼可以通過自已選擇來決定圖片的大小!
效果圖如下所示:希望對你有幫助!
其中
minSize: [48,48],
setSelect: [0,0,190,190],
是調整選取範圍的大小,若你 調整為120和160就改為了
setSelect: [0,0,120,160],
就可以了!
?php
error_reporting(7);
date_default_timezone_set(“Asia/Shanghai”);
header(“Content-type:text/html; Charset=utf-8”);
require_once(“./image.class.php”);
$images = new Images(“file”);
if ($_GET[‘act’] == ‘cut’){
$image = “0000.jpg”;
$res = $images-thumb($image,false,1);
if($res == false){
echo “裁剪失敗”;
}elseif(is_array($res)){
echo ‘img src=”‘.$res[‘big’].'” style=”margin:10px;”‘;
echo ‘img src=”‘.$res[‘small’].'” style=”margin:10px;”‘;
}elseif(is_string($res)){
echo ‘img src=”‘.$res.'”‘;
}
}elseif(isset($_GET[‘act’]) $_GET[‘act’] == “upload”){
$path = $images-move_uploaded();
$images-thumb($path,false,0); //文件比規定的尺寸大則生成縮略圖,小則保持原樣
if($path == false){
$images-get_errMsg();
}else{
echo “上傳成功!a href='”.$path.”‘ target=’_blank’查看/a”;
}
}else{
?
!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN” “;quot;;
html
head
meta name=”Author” content=”SeekEver”
meta name=”Keywords” content=””
meta name=”Description” content=””
meta content=”text/html; charset=UTF-8″ http-equiv=”Content-Type”
script src=”./js/jquery.min.js” type=”text/javascript”/script
script src=”./js/jquery.Jcrop.js” type=”text/javascript”/script
link rel=”stylesheet” href=”./css/jquery.Jcrop.css” type=”text/css” /
script type=”text/javascript”
jQuery(function($){
// Create variables (in this scope) to hold the API and image size
var jcrop_api, boundx, boundy;
$(‘#target’).Jcrop({
minSize: [48,48],
setSelect: [0,0,190,190],
onChange: updatePreview,
onSelect: updatePreview,
onSelect: updateCoords,
aspectRatio: 1
},
function(){
// Use the API to get the real image size
var bounds = this.getBounds();
boundx = bounds[0];
boundy = bounds[1];
// Store the API in the jcrop_api variable
jcrop_api = this;
});
function updateCoords(c)
{
$(‘#x’).val(c.x);
$(‘#y’).val(c.y);
$(‘#w’).val(c.w);
$(‘#h’).val(c.h);
};
function checkCoords()
{
if (parseInt($(‘#w’).val())) return true;
alert(‘Please select a crop region then press submit.’);
return false;
};
function updatePreview(c){
if (parseInt(c.w) 0)
{
var rx = 48 / c.w; //小頭像預覽Div的大小
var ry = 48 / c.h;
$(‘#preview’).css({
width: Math.round(rx * boundx) + ‘px’,
height: Math.round(ry * boundy) + ‘px’,
marginLeft: ‘-‘ + Math.round(rx * c.x) + ‘px’,
marginTop: ‘-‘ + Math.round(ry * c.y) + ‘px’
});
}
{
var rx = 199 / c.w; //大頭像預覽Div的大小
var ry = 199 / c.h;
$(‘#preview2’).css({
width: Math.round(rx * boundx) + ‘px’,
height: Math.round(ry * boundy) + ‘px’,
marginLeft: ‘-‘ + Math.round(rx * c.x) + ‘px’,
marginTop: ‘-‘ + Math.round(ry * c.y) + ‘px’
});
}
};
});
/script
/head
body
form method=”post” action=”?act=upload” enctype=”multipart/form-data”
input type=”file” name=”file”
input type=”submit” value=”上傳”
/form
div style=”float:left;”img id=”target” src=”0000.jpg” /div
div style=”width:48px;height:48px;margin:10px;overflow:hidden; float:left;”img style=”float:left;” id=”preview” src=”0000.jpg” /div
div style=”width:190px;height:195px;margin:10px;overflow:hidden; float:left;”img style=”float:left;” id=”preview2″ src=”0000.jpg” /div
form action=”index.php?act=cut” method=”post” onsubmit=”return checkCoords();”
input type=”hidden” id=”x” name=”x” /
input type=”hidden” id=”y” name=”y” /
input type=”hidden” id=”w” name=”w” /
input type=”hidden” id=”h” name=”h” /
input type=”submit” value=”裁剪” /
/form
/body
/html
?php
}
?
php 裁切圖片問題 求助
PHP做圖片裁切
PHP做圖片裁剪的原理是通過前台定位出要裁剪圖片的左上角位置,及右下角位置的做標,如果有放大和縮小的話還要給出放大和縮小的百分比,以及要對哪一個圖片進行操作,這幾個值傳到後台,在用PHP去處理!
前端圖片坐標點的得到可以自己用JS去實現,如果你的JS寫的不是很熟也沒有關係,可以下載一個jsCropperUI這一個包裏面有很多的DEMO,可以實現前台的拖曳效果了!
前台會有一個AJAX向後台發送數據,一般格式為x1=”+position[0]+”y1=”+position[1]+”x2=”+position[2]+”y2=”+position[3]+”r=”+position[4]+”id = imgid四個坐標,縮放值,要操作的ID
後PHP接收這個數據後,進行操作
$x1 = $_GET[‘x1’];
$y1 = $_GET[‘y1’];
$x2 = $_GET[‘x2’];
$y2 = $_GET[‘y2’];
$r = $_GET[‘r’];
if($x2$x1||$y2$y1){
return false;
}
$img=”dog.jpg”;
$im=imagecreatefromjpeg($img);
$percent = $r*0.01;
list($width, $height) = getimagesize($img);
$new_width = $width * $percent;
$new_height = $height * $percent;
$tempimg = imagecreatetruecolor($new_width,$new_height);
imagecopyresampled($tempimg, $im,0,0,0,0, $new_width,$new_height, $width, $height);
imagejpeg($tempimg,”dog_temp.jpg”);
ImageDestroy ($im);
$ims=$tempimg;
$srcW=ImageSX($ims);
$srcH=ImageSY($ims);
$top_x = $x1;
$top_y = $y1;
$bottom_x = $x2;
$bottom_y = $y2;
$newimg = imagecreatetruecolor($bottom_x-$top_x,$bottom_y-$top_y);
imagecopyresampled($newimg, $ims,0,0,$top_x,$top_y, $srcW,$srcH, $srcW, $srcH);
imagejpeg($newimg,”dogs.jpg”);
ImageDestroy ($ims);
echo 1;
成功後輸出1讓前台得到進行裁剪區域的刷新!這樣就可以實現PHP裁剪圖片的效果了!
php如何實現圖片的裁剪
php中裁剪圖片主要使用gd庫的imagecopyresampled方法
$src_path = ‘1.jpg’;
//創建源圖的實例
$src = imagecreatefromstring(file_get_contents($src_path));
//裁剪開區域左上角的點的坐標
$x = 100;
$y = 12;
//裁剪區域的寬和高
$width = 200;
$height = 200;
//最終保存成圖片的寬和高,和源要等比例,否則會變形
$final_width = 100;
$final_height = round($final_width * $height / $width);
//將裁剪區域複製到新圖片上,並根據源和目標的寬高進行縮放或者拉升
$new_image = imagecreatetruecolor($final_width, $final_height);
imagecopyresampled($new_image, $src, 0, 0, $x, $y, $final_width, $final_height, $width, $height);
//輸出圖片
header(‘Content-Type: image/jpeg’);
imagejpeg($new_image);
imagedestroy($src);
imagedestroy($new_image);
PHP 圖片下載本地並進行裁剪
?php
//剪裁圖片
//1,打開圖像
//2,創建一個空白的圖像
$name=”./img/1.jpg”;
// cut($name,0,0,200,200);
$x1=289;
$y1=149;
$x2=438;
$y2=257;
cut($name,289,149,438,257);
function cut($name,$x1,$y1,$x2,$y2){
function getinfo($name){
//getimagesize($dname)函數可以動態的獲取圖片類型,大小,寬度和高度等
$info=getimagesize($name);
$width=$info[0];
$height=$info[1];
$mime=$info[‘mime’];
switch ($mime) {
case ‘image/jpeg’:
$res=imagecreatefromjpeg($name);
break;
case ‘image/gif’:
$res=imagecreatefromgif($name);
break;
case ‘image/png’:
$res=imagecreatefrompng($name);
break;
case ‘image/wbmp’:
$res=imagecreatefromwbmp($name);
break;
}
return array(‘width’=$width,’height’=$height,’res’=$res);
}
$info=getinfo($name);
$img=imagecreatetruecolor(($x2-$x1),($y2-$y1));
imagecopymerge($img,$info[‘res’],0,0,$x1,$y1,($x2-$x1),($y2-$y1),100);
// header(“content-type:image/png”);
// imagepng($img);
$ext=pathinfo($name,PATHINFO_EXTENSION);
$rand_name=md5(mt_rand().time()).”.”.$ext;
switch($ext){
case ‘jpg’:
case ‘jpeg’:
case ‘jpe’:
imagejpeg($img,$rand_name);
break;
case ‘png’:
imagepng($img,$rand_name);
break;
case ‘gif’:
imagegif($img,$rand_name);
break;
case ‘bmp’:
case ‘wbmp’:
imagewbmp($img,$rand_name);
break;
}
//銷毀資源
imagedestroy($info[‘res’]);
imagedestroy($img);
}
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/309245.html