Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在wordpress中从一个文件夹裁剪、重新调整大小并将图像保存到另一个文件夹_Php_Image Processing_Wordpress_Resize Crop - Fatal编程技术网

Php 在wordpress中从一个文件夹裁剪、重新调整大小并将图像保存到另一个文件夹

Php 在wordpress中从一个文件夹裁剪、重新调整大小并将图像保存到另一个文件夹,php,image-processing,wordpress,resize-crop,Php,Image Processing,Wordpress,Resize Crop,我正在为我多年前开发的WordPress插件添加一个升级。这个插件只是一个产品目录,所以只需显示产品及其图像。产品可以有多个图像 我用CSS在旧版本的插件中重新调整图像的大小,分配它们的宽度和高度。这是工作,但图像看起来拉伸,但用户很高兴。现在,我在插件中添加了一个新功能,可以从上传的图像中裁剪并重新调整大小,然后用不同的名称保存,比如缩略图.jpg。 这项新功能对于上传图片的新用户来说非常有效,但问题是老用户升级到了新版本 问题是老用户已经有了产品和图像。当我尝试通过foreach循环获取所有

我正在为我多年前开发的WordPress插件添加一个升级。这个插件只是一个产品目录,所以只需显示产品及其图像。产品可以有多个图像

我用CSS在旧版本的插件中重新调整图像的大小,分配它们的宽度和高度。这是工作,但图像看起来拉伸,但用户很高兴。现在,我在插件中添加了一个新功能,可以从上传的图像中裁剪并重新调整大小,然后用不同的名称保存,比如缩略图.jpg。 这项新功能对于上传图片的新用户来说非常有效,但问题是老用户升级到了新版本

问题是老用户已经有了产品和图像。当我尝试通过
foreach
循环获取所有产品和图像时,它在200-250张图像上运行良好,但在250多张图像上中断-无错误:(

我的许多老用户都有600多张图像,因此我想找到一种方法来裁剪和重新调整现有图像的大小,并使用新名称保存它们,并将文件名保存在数据库中

我正在使用wordpress的默认
wp\u get\u image\u editor();
函数

以下是我的查询,以获取具有图像的旧产品:

$wpc_product_images_sql = "Select wpc_posts.*, wpc_meta.* From " . $wpdb->posts . " As wpc_posts Inner Join " . $wpdb->postmeta . " As wpc_meta On wpc_posts.ID = wpc_meta.post_id Where wpc_meta.meta_key = 'product_images' Order By wpc_posts.post_title;
这是我的
foreach
循环(我使用两个循环。第一个循环是获取有图像的产品,第二个循环是获取每篇文章的图像,正如我在前面的问题中提到的,产品可以有多个图像。所以必须使用两个循环)

foreach($wpc\u images\u qry作为$wpc\u prod\u images){
回声“
“.$wpc_产品图片->发布标题”
. '';
$wpc\U post\U id=$wpc\U prod\U images->id;
$wpc_product_images=get_post_meta($wpc_post_id,'product_images',true);
$big_img_name=array();
foreach($wpc\U产品\U图像作为$wpc\U产品\U img){
///大人物
$big_resize_img=wp_get_image_editor($wpc_prod_img['product_img');
如果(!is_wp_error($big_resize_img)){
$product_big_img=$wpc_prod_img['product_img'];
$product\U img\U explode=爆炸(“/”,$product\U big\U img);
$product\U img\U name=结束($product\U img\U explode);
$product\U img\U name\U explode=分解('.',$product\U img\U name);
$product\U img\U name=$product\U img\U name\U explode[0];
$product_img_ext=$product_img_name_explode[1];
$big_crop=array('center','center');
$big_resize_img->resize($wpc_image_width,$wpc_image_height,$big_crop);
$big_filename=$big_resize_img->generate_filename('big-'.$wpc_image_width.'x'.$wpc_image_height,$upload_dir['path'],NULL);
$big\u resize\u img->save($big\u filename);
$big_img_name['wpc_big_img']=$upload_dir['url'./'.$product_img_name.-big-'.$wpc_image_width.'x.$wpc_image_height.$product_img_ext;
如果(文件存在($upload_dir['path']./'.$product_img_name.-big-'.$wpc_图像宽度.x.$wpc_图像高度..$product_img_ext)){
echo$upload_dir['path']./'.$product_img_name.-big-'.$wpc_image_WITH.'x'.$wpc_image_height.'.$product_img_ext.-
; }否则{ echo$upload_dir['path']./'.$product_img_name.-big-'.$wpc_image_WITH.'x'.$wpc_image_height..'.$product_img_ext.:(
); } } } 更新发布元($wpc\U发布id,$wpc\U大图片',$big\U img\U名称); 回声“ . ''; }
您可以尝试使用 然后跑 这肯定有解决超时问题的办法。 有一种方法可以在更新时为插件用户显示消息,如果他们有旧图像,请他们安装并运行插件


希望对您有用。

您可以尝试使用添加新图像大小 然后跑 这肯定有解决超时问题的办法。 有一种方法可以在更新时为插件用户显示消息,如果他们有旧图像,请他们安装并运行插件


希望对您有用。

如果您想调整图像大小,请遵循以下步骤,每次在媒体中上载图像时,它都会调整图像大小

add_filter('wp_handle_upload_prefilter','aj_handle_upload');

function aj_handle_upload($file)
{

    add_image_size( 'mobile', 360, 0, array( 'center', 'center' ));//mobile is userdefined name.    
    add_image_size( 'desktop', 700, 0, array( 'center', 'center' ));//desktop & tablet is user defined name.    
    return $file;
}

如果您想调整图像大小,请遵循以下步骤,在媒体中上载图像时,它会调整图像大小

add_filter('wp_handle_upload_prefilter','aj_handle_upload');

function aj_handle_upload($file)
{

    add_image_size( 'mobile', 360, 0, array( 'center', 'center' ));//mobile is userdefined name.    
    add_image_size( 'desktop', 700, 0, array( 'center', 'center' ));//desktop & tablet is user defined name.    
    return $file;
}

这是否与脚本运行时间过长(通常设置为30秒左右)时服务器超时有关。如果它可以在200-250个图像上运行,您可以在200-250个图像的批处理中执行它们吗?这可能是服务器超时问题…那么您对在php中批处理图像有何建议?这是否与脚本运行时间过长时服务器超时有关(通常设置为30秒左右)。如果它可以在200-250个图像上运行,您可以在200-250个图像的批处理中执行它们吗?这可能是服务器超时问题…那么您对在php中批处理图像有什么建议?