您的位置:首页 > 其它

自定义方法,参数取值超范围抛异常

2017-06-01 13:47 603 查看
/**
* Compress a rectangle region in the YuvImage to a jpeg.
* Only ImageFormat.NV21 and ImageFormat.YUY2
* are supported for now.
*
* @param rectangle The rectangle region to be compressed. The medthod checks if rectangle is
*                  inside the image. Also, the method modifies rectangle if the chroma pixels
*                  in it are not matched with the luma pixels in it.
* @param quality   Hint to the compressor, 0-100. 0 meaning compress for
*                  small size, 100 meaning compress for max quality.
* @param stream    OutputStream to write the compressed data.
* @return          True if the compression is successful.
* @throws IllegalArgumentException if rectangle is invalid; quality is not within [0,
*                  100]; or stream is null.
*/
public boolean compressToJpeg(Rect rectangle, int quality, OutputStream stream) {
Rect wholeImage = new Rect(0, 0, mWidth, mHeight);
if (!wholeImage.contains(rectangle)) {
throw new IllegalArgumentException(
"rectangle is not inside the image");
}

if (quality < 0 || quality > 100) {
throw new IllegalArgumentException("quality must be 0..100");
}

if (stream == null) {
throw new IllegalArgumentException("stream cannot be null");
}

adjustRectangle(rectangle);
int[] offsets = calculateOffsets(rectangle.left, rectangle.top);

return nativeCompressToJpeg(mData, mFormat, rectangle.width(),
rectangle.height(), offsets, mStrides, quality, stream,
new byte[WORKING_COMPRESS_STORAGE]);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: