[英]How do I crop an image using RenderScript?
我希望能夠使用RenderScript裁剪圖像。 這是我的裁剪函數:
uchar4 __attribute__((kernel)) crop(const uchar4 in, uint32_t x, uint32_t y){
int minX = centerX - cropWidth;
int maxX = centerX + cropWidth;
int minY = centerY - cropHeight;
int maxY = centerY + cropHeight;
uchar4 out = in;
if((minX < x < maxX ) && (minY < y < maxY)){
return out;
}
else{
out.r = 0;
out.g = 0;
out.b = 255;
return out;
}
}
這是所需的邏輯:
如果像素不在IF條件中指定的XY范圍內,那么我希望該像素為藍色。
出於某種原因,不管我怎么界限嚴格的, 沒有一個像素是藍色的。 有人可以向我解釋為什么嗎? 以及如何解決?
如果我將IF條件替換為false( if(false)
,那么它保證了ELSE代碼的執行),那么所有像素都是藍色的(如預期的那樣)。
minX < x < maxX
無法按照您期望的方式工作。 該代碼正在執行的操作是首先檢查minX < x
,然后將結果布爾值轉換為Integer(將為0或1),最后檢查該Integer是否小於maxX
(它將始終為maxX
)。 ( y
發生了同樣的事情)。 您需要像這樣重寫該檢查:
(minX < x && x < maxX ) && (minY < y && y < maxY)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.