Python-fu / gimpfu参数 - “图像”是什么意思?

时间:2016-02-02 06:53:01

标签: parameters gimp python-fu gimpfu

我一直在尝试从script-fu切换到python-fu,我无法弄清楚我应该为“image”参数传递什么。在script-fu中它只是一个整数,但是当我将相同的整数放入python-fu时,它只是说它是错误的类型。与字符串和花车相同......我应该放在这里什么?文档只是说它所采用的参数是“IMAGE”,但这是什么意思?我在哪里找到它?我怎么得到它?

$products = Product::leftjoin('reviews','products.id','=','reviews.productID')
     ->select('products.*',DB::raw("AVG(rating) as 'productRating'"))
     ->where('products.status','=',"enable")
     ->whereIn('categoryID',$categoriesID)
     ->whereBetween('productSellingPrice',$priceArray)
     ->groupBy('products.id');


if(count($brands) > 0)
{
     $products->whereIn('brandID',$brands);
}

if(count($ratingArray) > 0)
{
    // assume $ratingArray = [$min, $max];
    list($ratingMin, $ratingMax) = $ratingArray;
    $products->having('productRating', '>', $ratingMin);
    $products->having('productRating', '<', $ratingMax);
}

$items = $products->get();

Here's a picture of the interpreter.

1 个答案:

答案 0 :(得分:6)

你传递一个Image对象 - 不使用script-fu中只有整数的大多数参数 - 在它们的位置,你必须传递一个实际的对象引用。你怎么得到那些?

只是所有的PDB函数和方法都已经返回这些对象 - 而不是它们的数字ID,就像在script-fu中一样。

因此,对于Image,您可以获取python-fu函数的Image作为参数,或者调用pdb.gimp_image_new。

如果您经常在交互式控制台上进行测试,则必须获取对活动图像的引用。在那种情况下,打电话 gimp.image_list()获取当前打开图像的Python列表 - 此列表中索引0处的图像是屏幕上最右侧(最新)的打开图像 - 只需执行image = gimp.image_list()[0]即可获得对它的引用

当你在这里时,用dir(image)探索图像对象你会发现它填充了属性和方法,这些属性和方法是其他难以输入的pdb调用的便捷快捷方式。例如,image.layers为您提供了一个Python列表,其中引用了图像上的所有图层(作为实际的图层对象,而不是其ID),image.width为您提供宽度,并调用img.new_layer()创建一个新图层并将其添加到图像中 - 此调用具有可选参数以指定其名称,宽度,高度等。

作为最后的手段,gimp模块上有保留方法可以将数字ID转换为实际对象:'_id2display', '_id2drawable', '_id2image', '_id2vectors' - 您不需要使用这些方法。如果您发现自己需要在脚本体中使用它们,由于某些pdb函数返回ID而不是对象,请填写有关GIMP的bugzilla的错误报告。