存档

文章标签 ‘裁剪’

php自动裁剪图片,根据指定大小裁剪居中缩略图

2020年3月12日 没有评论
function image_center_crop($source,$target,$width,$height,$quality=100){
		if(!is_file($source)) {return false;}
		/* 根据类型载入图像 */
		switch(exif_imagetype($source)){
			case IMAGETYPE_JPEG:$image=imagecreatefromjpeg($source);break;
			case IMAGETYPE_PNG:$image=imagecreatefrompng($source);break;
			case IMAGETYPE_GIF:$image=imagecreatefromgif($source);break;
		}
		if(!isset($image)) {return false;}
		/* 获取图像尺寸信息 */
		$target_w=$width;
		$target_h=$height;
		$source_w=imagesx($image);
		$source_h=imagesy($image);
		/* 计算裁剪宽度和高度 */
		$judge=(($source_w/$source_h)>($target_w/$target_h));
		$resize_w=$judge?($source_w * $target_h)/$source_h:$target_w;
		$resize_h=!$judge?($source_h * $target_w)/$source_w:$target_h;
		$start_x=$judge?($resize_w-$target_w)/2:0;
		$start_y=!$judge?($resize_h-$target_h)/2:0;
		
		/* 绘制居中缩放图像 */
		$resize_img=imagecreatetruecolor($resize_w,$resize_h);
		imagecopyresampled($resize_img,$image, 0, 0, 0, 0,$resize_w,$resize_h,$source_w,$source_h);
		$target_img=imagecreatetruecolor($target_w,$target_h);
		imagecopy($target_img,$resize_img, 0, 0,$start_x,$start_y,$resize_w,$resize_h);
		/* 将图片保存至文件 */
		if(!file_exists(dirname($target))) mkdir(dirname($target),0777,true);
		imagejpeg($target_img,$target,$quality);
		return is_file($target);
	}

以上php代码可以实现php自动裁剪图片,根据指定大小裁剪居中缩略图。

分类: php学习 标签: , ,

android魅族照片剪切问题(小米?)

2015年4月22日 没有评论

魅族手机调用系统图片剪切功能的问题。
调用图片剪切的代码
/**
* 用于截取大图
*
* @param ctx
* @param uri
* @param outputX
* @param outputY
* @param requestCode
*/
public static void cropImageUri(Activity ctx, Uri uri, int outputX, int outputY, int requestCode, boolean scale) {
Intent intent = new Intent(“com.android.camera.action.CROP”);
intent.setDataAndType(uri, IMAGE_UNSPECIFIED);
intent.putExtra(“crop”, “true”);//发送裁剪信号
intent.putExtra(“outputX”, outputX);//裁剪区的宽
intent.putExtra(“outputY”, outputY);//裁剪区的高
intent.putExtra(“aspectX”, 1);//X方向上的比例
intent.putExtra(“aspectY”, 1);//Y方向上的比例
intent.putExtra(“scale”, scale);//是否保留比例
//intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);//直接输出文件
intent.putExtra(“return-data”, true); //是否返回数据
//        intent.putExtra(“outputFormat”, Bitmap.CompressFormat.JPEG.toString());
intent.putExtra(“noFaceDetection”, true); //关闭人脸检测
ctx.startActivityForResult(intent, requestCode);
}

 

参照魅族官方论坛帖子:com.android.camera.action.CROP照片剪辑的问题
具体表现为剪切完成后在onActivityResult 中取不到data数据。其他机器目前没有发现这样的问题

 

解决办法

mPhoto = extras.getParcelable(“data”);
if (mPhoto == null) {
String filePath = extras.getString(“filePath”);
if (!StringUtils.isEmpty(filePath))
mPhoto = ImageUtils.decodeSampledBitmapFromFile(filePath, 400, 600);
}

 

虽然魅族的机器没有返回data字段,但是返回了filePath,是相册选中地址的路径,可以把这个图片按尺寸获取一下。注意可能丢失剪切效果,目前暂时这样处理的。

 

分类: android 标签: ,

自动裁剪textarea的长度为对象的maxlength

2013年5月21日 没有评论

//自动裁剪textarea的长度为对象的maxlength
function autoTextareaLength_tips(objid,maxLength,tipsid) {
var curLength=$(objid).val().length;
if(curLength>=maxLength){
var num=$(objid).val().substr(0,maxLength-1);
$(objid).val(num);
return false;
}
else{
$(tipsid).html(maxLength-1-($(objid).val().length))
}
}

css.php