我正在开发插件,在插件中我为图片创建上传元字段以上传一个或多个图片。它完美地工作并在插件设置中为用户提供选项,他们为大图像和缩略图设置图像大小(widthxheight)。首先,我在<img />
attrribute width and height
中使用这些选项,并调整图片大小,但图像效果不佳。
所以现在我想在wordpress上传图片时自己裁剪图片。首先,我尝试使用wordpress bult-in函数add_image_size()
。它会裁剪图像,但图像不会分配到帖子,因为我使用元字段和原始图像路径存储在wp_postmeta
表格中,并且图像路径保存在wp_posts
表中,但它们不会分配给任何post(post_parent为0)
我也使用网络中的一些核心PHP代码,但我不明白我如何在WordPress中合并此代码,但它在核心php中的工作完美
这是核心的PHP代码:
的index.php
<form enctype="multipart/form-data" method="post" action="image_upload_script.php">
Choose your file here:
<input name="uploaded_file" type="file"/><br /><br />
<input type="submit" value="Upload It"/>
image_upload_script.php
$fileName = $_FILES["uploaded_file"]["name"];
$fileTmpLoc = $_FILES["uploaded_file"]["tmp_name"];
$kaboom = explode(".", $fileName);
$fileExt = end($kaboom);
$moveResult = move_uploaded_file($fileTmpLoc, "uploads/$fileName");
include_once("ak_php_img_lib_1.0.php");
$target_file = "uploads/$fileName";
$resized_file = "uploads/resized_$fileName";
$wmax = 200;
$hmax = 150;
ak_img_resize($target_file, $resized_file, $wmax, $hmax, $fileExt);
ak_php_img_lib_1.0.php
function ak_img_resize($target, $newcopy, $w, $h, $ext) {
list($w_orig, $h_orig) = getimagesize($target);
$scale_ratio = $w_orig / $h_orig;
$img = "";
$ext = strtolower($ext);
if ($ext == "gif"){
$img = imagecreatefromgif($target);
} else if($ext =="png"){
$img = imagecreatefrompng($target);
} else {
$img = imagecreatefromjpeg($target);
}
$tci = imagecreatetruecolor($w, $h);
// imagecopyresampled(dst_img, src_img, dst_x, dst_y, src_x, src_y, dst_w, dst_h, src_w, src_h)
imagecopyresampled($tci, $img, 0, 0, 0, 0, $w, $h, $w_orig, $h_orig);
imagejpeg($tci, $newcopy);
在核心php中它的工作完美,但我不知道我怎么能在wordpress中使用它,或者是否有另一种wordpress方法来实现这一点。