-
Notifications
You must be signed in to change notification settings - Fork 557
Bitmap extensions #418
base: master
Are you sure you want to change the base?
Bitmap extensions #418
Changes from 1 commit
5717646
acfc8b4
1e6bbfa
29b2a18
d1f464d
02fb227
8086a2d
4f57ec8
e421387
4a22496
3517ae4
b855f4c
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -27,6 +27,7 @@ import android.graphics.Matrix | |
| import android.support.annotation.ColorInt | ||
| import android.support.annotation.IntRange | ||
| import android.support.annotation.RequiresApi | ||
| import java.io.ByteArrayInputStream | ||
| import java.io.ByteArrayOutputStream | ||
|
|
||
| /** | ||
|
|
@@ -118,17 +119,18 @@ inline fun createBitmap( | |
| } | ||
|
|
||
| /** | ||
| * Returns ByteArray compressed from this bitmap with the specified [format] | ||
| * Returns ByteArrayInputStream compressed from this bitmap with the specified [format] | ||
| * and [quality]. | ||
| * | ||
| * @param format The format of bitmap. | ||
| * @param quality Hint to the compressor, 0-100. 0 meaning compress for small size, 100 meaning compress for max quality. | ||
| * @return ByteArray | ||
| * @return ByteArrayInputStream | ||
| */ | ||
| inline fun Bitmap.toByteArray( | ||
| inline fun Bitmap.toStream( | ||
| format: CompressFormat = CompressFormat.JPEG, | ||
| @IntRange(from = 0, to = 100) quality: Int = 100 | ||
| ) = ByteArrayOutputStream().also { compress(format, quality, it) }.toByteArray() | ||
| ): ByteArrayInputStream = | ||
| ByteArrayOutputStream().also { compress(format, quality, it) }.toByteArray().inputStream() | ||
|
|
||
| /** | ||
| * Creates a new bitmap, clipped from this bitmap. If the specified [x], [y], | ||
|
|
@@ -141,23 +143,9 @@ inline fun Bitmap.toByteArray( | |
| * @param height The height. | ||
| * @return the clipped bitmap | ||
| */ | ||
| inline fun Bitmap.clip(x: Int, y: Int, width: Int, height: Int) = | ||
| inline fun Bitmap.clip(x: Int, y: Int, width: Int, height: Int): Bitmap = | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The return type is not needed. Please rename this method to |
||
| Bitmap.createBitmap(this, x, y, width, height) | ||
|
|
||
| /** | ||
| * Creates a new bitmap, skewed from this bitmap by [kx] and [ky], | ||
| * with a pivot point at ([px], [py]). The pivot point is the | ||
| * coordinate that should remain unchanged by the specified transformation. | ||
| * | ||
| * @param kx The skew factor of x. | ||
| * @param ky The skew factor of y. | ||
| * @param px The x coordinate of the pivot point. | ||
| * @param py The y coordinate of the pivot point. | ||
| * @return the skewed bitmap | ||
| */ | ||
| inline fun Bitmap.skew(kx: Float, ky: Float) = | ||
| createBitmap(this, 0, 0, width, height, Matrix().apply { setSkew(kx, ky) }, true) | ||
|
|
||
| /** | ||
| * Creates a new bitmap, rotated from this bitmap by [degrees] - the specified number of degrees, | ||
| * with a pivot point at ([px], [py]). The pivot point is the coordinate that should remain | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. There's no pivot point in the API
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. sorry for that, i added it.
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Thanks for the change. The pivot point should probably be set to width/2.0f and height/2.0f by default.
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I added the default pivot point. |
||
|
|
@@ -168,5 +156,5 @@ inline fun Bitmap.skew(kx: Float, ky: Float) = | |
| * @param py The y coordinate of the pivot point. | ||
| * @return the rotated bitmap | ||
| */ | ||
| inline fun Bitmap.rotate(degrees: Float) = | ||
| inline fun Bitmap.rotate(degrees: Float): Bitmap = | ||
| createBitmap(this, 0, 0, width, height, Matrix().apply { setRotate(degrees) }, true) | ||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That is not what I meant. What I meant is that there shouldn't be an extension on
Bitmapto compress to a byte array or a stream, etc.Bitmap.compress()already accepts anOuputStreamwhich is generic enough to cover all use cases. It shouldn't be specialized here.