我正在使用 croppic调整我的图像大小,然后使用裁剪后的图像上传到数据库。但他们的默认文档提供了 PHP 示例。
var cropperHeader = new Crop('yourId', cropperOptions);
var cropperOptions = {
uploadUrl:'path_to_your_image_proccessing_file.php'
}
php文件是这样的:
<?php
$imagePath = "temp/";
$allowedExts = array("gif", "jpeg", "jpg", "png", "GIF", "JPEG", "JPG", "PNG");
$temp = explode(".", $_FILES["img"]["name"]);
$extension = end($temp);
if ( in_array($extension, $allowedExts))
{
if ($_FILES["img"]["error"] > 0)
{
$response = array(
"status" => 'error',
"message" => 'ERROR Return Code: '. $_FILES["img"]["error"],
);
echo "Return Code: " . $_FILES["img"]["error"] . "<br>";
}
else
{
$filename = $_FILES["img"]["tmp_name"];
list($width, $height) = getimagesize( $filename );
move_uploaded_file($filename, $imagePath . $_FILES["img"]["name"]);
$response = array(
"status" => 'success',
"url" => $imagePath.$_FILES["img"]["name"],
"width" => $width,
"height" => $height
);
}
}
else
{
$response = array(
"status" => 'error',
"message" => 'something went wrong',
);
}
print json_encode($response);
?>
如何在 asp.net 中获得相同的行为。
最佳答案
这是 ASP.NET MVC 中的解决方案。对存储图像的文件夹做出了一些假设。
.cshtml 页面如下所示:
<div id="croppic"></div>
<script type="text/javascript">
var cropperOptions = {
uploadUrl: "UploadOriginalImage",
cropUrl: "CroppedImage",
imgEyecandy:true,
imgEyecandyOpacity:0.2
}
var cropper = new Croppic('croppic', cropperOptions);
</script>
这就是我放入 Controller 的内容:
[HttpPost]
public string UploadOriginalImage(HttpPostedFileBase img)
{
string folder = Server.MapPath("~/Temp");
string extension = Path.GetExtension(img.FileName);
string pic = System.IO.Path.GetFileName(Guid.NewGuid().ToString());
var tempPath = Path.ChangeExtension(pic, extension);
string tempFilePath = System.IO.Path.Combine(folder, tempPath);
img.SaveAs(tempFilePath);
var image = System.Drawing.Image.FromFile(tempFilePath);
var result = new
{
status = "success",
width = image.Width,
height = image.Height,
url = "../Temp/" + tempPath
};
return JsonConvert.SerializeObject(result);
}
[HttpPost]
public string CroppedImage(string imgUrl, int imgInitW, int imgInitH, double imgW, double imgH, int imgY1, int imgX1, int cropH, int cropW)
{
var originalFilePath = Server.MapPath(imgUrl);
var fileName = CropImage(originalFilePath, imgInitW, imgInitH, (int)imgW, (int)imgH, imgY1, imgX1, cropH, cropW);
var result = new
{
status="success",
url="../Cropped/" + fileName
};
return JsonConvert.SerializeObject(result);
}
private string CropImage(string originalFilePath, int origW, int origH, int targetW, int targetH, int cropStartY, int cropStartX, int cropW, int cropH)
{
var originalImage = Image.FromFile(originalFilePath);
var resizedOriginalImage = new Bitmap(originalImage, targetW, targetH);
var targetImage = new Bitmap(cropW, cropH);
using (var g = Graphics.FromImage(targetImage))
{
g.DrawImage(resizedOriginalImage, new Rectangle(0, 0, cropW, cropH), new Rectangle(cropStartX, cropStartY, cropW, cropH), GraphicsUnit.Pixel);
}
string fileName = Path.GetFileName(originalFilePath);
var folder = Server.MapPath("~/Cropped");
string croppedPath = Path.Combine(folder, fileName);
targetImage.Save(croppedPath);
return fileName;
}
关于c# - 在 asp.net 中使用 croppic,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24962981/