本文整理汇总了Java中com.facebook.common.memory.PooledByteBuffer类的典型用法代码示例。如果您正苦于以下问题:Java PooledByteBuffer类的具体用法?Java PooledByteBuffer怎么用?Java PooledByteBuffer使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
PooledByteBuffer类属于com.facebook.common.memory包,在下文中一共展示了PooledByteBuffer类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: decodeGif
import com.facebook.common.memory.PooledByteBuffer; //导入依赖的package包/类
/**
* Decodes a GIF into a CloseableImage.
* @param encodedImage encoded image (native byte array holding the encoded bytes and meta data)
* @param options the options for the decode
* @param bitmapConfig the Bitmap.Config used to generate the output bitmaps
* @return a {@link CloseableImage} for the GIF image
*/
public CloseableImage decodeGif(
final EncodedImage encodedImage,
final ImageDecodeOptions options,
final Bitmap.Config bitmapConfig) {
if (sGifAnimatedImageDecoder == null) {
throw new UnsupportedOperationException("To encode animated gif please add the dependency " +
"to the animated-gif module");
}
final CloseableReference<PooledByteBuffer> bytesRef = encodedImage.getByteBufferRef();
Preconditions.checkNotNull(bytesRef);
try {
final PooledByteBuffer input = bytesRef.get();
AnimatedImage gifImage = sGifAnimatedImageDecoder.decode(input.getNativePtr(), input.size());
return getCloseableImage(options, gifImage, bitmapConfig);
} finally {
CloseableReference.closeSafely(bytesRef);
}
}
示例2: decodeWebP
import com.facebook.common.memory.PooledByteBuffer; //导入依赖的package包/类
/**
* Decode a WebP into a CloseableImage.
* @param encodedImage encoded image (native byte array holding the encoded bytes and meta data)
* @param options the options for the decode
* @param bitmapConfig the Bitmap.Config used to generate the output bitmaps
* @return a {@link CloseableImage} for the WebP image
*/
public CloseableImage decodeWebP(
final EncodedImage encodedImage,
final ImageDecodeOptions options,
final Bitmap.Config bitmapConfig) {
if (sWebpAnimatedImageDecoder == null) {
throw new UnsupportedOperationException("To encode animated webp please add the dependency " +
"to the animated-webp module");
}
final CloseableReference<PooledByteBuffer> bytesRef = encodedImage.getByteBufferRef();
Preconditions.checkNotNull(bytesRef);
try {
final PooledByteBuffer input = bytesRef.get();
AnimatedImage webPImage = sWebpAnimatedImageDecoder.decode(
input.getNativePtr(),
input.size());
return getCloseableImage(options, webPImage, bitmapConfig);
} finally {
CloseableReference.closeSafely(bytesRef);
}
}
示例3: cloneOrNull
import com.facebook.common.memory.PooledByteBuffer; //导入依赖的package包/类
public EncodedImage cloneOrNull() {
EncodedImage encodedImage;
if (mInputStreamSupplier != null) {
encodedImage = new EncodedImage(mInputStreamSupplier, mStreamSize);
} else {
CloseableReference<PooledByteBuffer> pooledByteBufferRef =
CloseableReference.cloneOrNull(mPooledByteBufferRef);
try {
encodedImage = (pooledByteBufferRef == null) ? null : new EncodedImage(pooledByteBufferRef);
} finally {
// Close the recently created reference since it will be cloned again in the constructor.
CloseableReference.closeSafely(pooledByteBufferRef);
}
}
if (encodedImage != null) {
encodedImage.copyMetaDataFrom(this);
}
return encodedImage;
}
示例4: getInputStream
import com.facebook.common.memory.PooledByteBuffer; //导入依赖的package包/类
/**
* Returns an InputStream from the internal InputStream Supplier if it's not null. Otherwise
* returns an InputStream for the internal buffer reference if valid and null otherwise.
*
* <p>The caller has to close the InputStream after using it.
*/
public InputStream getInputStream() {
if (mInputStreamSupplier != null) {
return mInputStreamSupplier.get();
}
CloseableReference<PooledByteBuffer> pooledByteBufferRef =
CloseableReference.cloneOrNull(mPooledByteBufferRef);
if (pooledByteBufferRef != null) {
try {
return new PooledByteBufferInputStream(pooledByteBufferRef.get());
} finally {
CloseableReference.closeSafely(pooledByteBufferRef);
}
}
return null;
}
示例5: getFirstBytesAsHexString
import com.facebook.common.memory.PooledByteBuffer; //导入依赖的package包/类
/**
* Returns first n bytes of encoded image as hexbytes
*
* @param length the number of bytes to return
*/
public String getFirstBytesAsHexString(int length) {
CloseableReference<PooledByteBuffer> imageBuffer = getByteBufferRef();
if (imageBuffer == null) {
return "";
}
int imageSize = getSize();
int resultSampleSize = Math.min(imageSize, length);
byte[] bytesBuffer = new byte[resultSampleSize];
try {
PooledByteBuffer pooledByteBuffer = imageBuffer.get();
if (pooledByteBuffer == null) {
return "";
}
pooledByteBuffer.read(0, bytesBuffer, 0, resultSampleSize);
} finally {
imageBuffer.close();
}
StringBuilder stringBuilder = new StringBuilder(bytesBuffer.length * 2);
for (byte b : bytesBuffer) {
stringBuilder.append(String.format("%02X", b));
}
return stringBuilder.toString();
}
示例6: generate
import com.facebook.common.memory.PooledByteBuffer; //导入依赖的package包/类
public CloseableReference<PooledByteBuffer> generate(short width, short height) {
PooledByteBufferOutputStream os = null;
try {
os = mPooledByteBufferFactory.newOutputStream(
EMPTY_JPEG_PREFIX.length + EMPTY_JPEG_SUFFIX.length + 4);
os.write(EMPTY_JPEG_PREFIX);
os.write((byte) (height >> 8));
os.write((byte) (height & 0x00ff));
os.write((byte) (width >> 8));
os.write((byte) (width & 0x00ff));
os.write(EMPTY_JPEG_SUFFIX);
return CloseableReference.of(os.toByteBuffer());
} catch (IOException e) {
throw new RuntimeException(e);
} finally {
if (os != null) {
os.close();
}
}
}
示例7: decodeByteArrayAsPurgeable
import com.facebook.common.memory.PooledByteBuffer; //导入依赖的package包/类
/**
* Decodes a byteArray into a purgeable bitmap
*
* @param bytesRef the byte buffer that contains the encoded bytes
* @return
*/
@Override
protected Bitmap decodeByteArrayAsPurgeable(
CloseableReference<PooledByteBuffer> bytesRef,
BitmapFactory.Options options) {
final PooledByteBuffer pooledByteBuffer = bytesRef.get();
final int length = pooledByteBuffer.size();
final CloseableReference<byte[]> encodedBytesArrayRef = mFlexByteArrayPool.get(length);
try {
final byte[] encodedBytesArray = encodedBytesArrayRef.get();
pooledByteBuffer.read(0, encodedBytesArray, 0, length);
Bitmap bitmap = BitmapFactory.decodeByteArray(
encodedBytesArray,
0,
length,
options);
return Preconditions.checkNotNull(bitmap, "BitmapFactory returned null");
} finally {
CloseableReference.closeSafely(encodedBytesArrayRef);
}
}
示例8: decodeFromEncodedImage
import com.facebook.common.memory.PooledByteBuffer; //导入依赖的package包/类
/**
* Creates a bitmap from encoded bytes.
*
* @param encodedImage the encoded image with reference to the encoded bytes
* @param bitmapConfig the {@link android.graphics.Bitmap.Config} used to create the decoded
* Bitmap
* @param regionToDecode optional image region to decode. currently not supported.
* @return the bitmap
* @throws TooManyBitmapsException if the pool is full
* @throws java.lang.OutOfMemoryError if the Bitmap cannot be allocated
*/
@Override
public CloseableReference<Bitmap> decodeFromEncodedImage(
final EncodedImage encodedImage, Bitmap.Config bitmapConfig, @Nullable Rect regionToDecode) {
BitmapFactory.Options options = getBitmapFactoryOptions(
encodedImage.getSampleSize(),
bitmapConfig);
CloseableReference<PooledByteBuffer> bytesRef = encodedImage.getByteBufferRef();
Preconditions.checkNotNull(bytesRef);
try {
Bitmap bitmap = decodeByteArrayAsPurgeable(bytesRef, options);
return pinBitmap(bitmap);
} finally {
CloseableReference.closeSafely(bytesRef);
}
}
示例9: decodeJPEGFromEncodedImage
import com.facebook.common.memory.PooledByteBuffer; //导入依赖的package包/类
/**
* Creates a bitmap from encoded JPEG bytes. Supports a partial JPEG image.
*
* @param encodedImage the encoded image with reference to the encoded bytes
* @param bitmapConfig the {@link android.graphics.Bitmap.Config} used to create the decoded
* Bitmap
* @param regionToDecode optional image region to decode. currently not supported.
* @param length the number of encoded bytes in the buffer
* @return the bitmap
* @throws TooManyBitmapsException if the pool is full
* @throws java.lang.OutOfMemoryError if the Bitmap cannot be allocated
*/
@Override
public CloseableReference<Bitmap> decodeJPEGFromEncodedImage(
final EncodedImage encodedImage,
Bitmap.Config bitmapConfig,
@Nullable Rect regionToDecode,
int length) {
BitmapFactory.Options options = getBitmapFactoryOptions(
encodedImage.getSampleSize(),
bitmapConfig);
final CloseableReference<PooledByteBuffer> bytesRef = encodedImage.getByteBufferRef();
Preconditions.checkNotNull(bytesRef);
try {
Bitmap bitmap = decodeJPEGByteArrayAsPurgeable(bytesRef, length, options);
return pinBitmap(bitmap);
} finally {
CloseableReference.closeSafely(bytesRef);
}
}
示例10: decodeFileDescriptorAsPurgeable
import com.facebook.common.memory.PooledByteBuffer; //导入依赖的package包/类
protected Bitmap decodeFileDescriptorAsPurgeable(
CloseableReference<PooledByteBuffer> bytesRef,
int inputLength,
byte[] suffix,
BitmapFactory.Options options) {
MemoryFile memoryFile = null;
try {
memoryFile = copyToMemoryFile(bytesRef, inputLength, suffix);
FileDescriptor fd = getMemoryFileDescriptor(memoryFile);
Bitmap bitmap = sWebpBitmapFactory.decodeFileDescriptor(fd, null, options);
return Preconditions.checkNotNull(bitmap, "BitmapFactory returned null");
} catch (IOException e) {
throw Throwables.propagate(e);
} finally {
if (memoryFile != null) {
memoryFile.close();
}
}
}
示例11: get
import com.facebook.common.memory.PooledByteBuffer; //导入依赖的package包/类
public static MemoryCache<CacheKey, PooledByteBuffer> get(
final CountingMemoryCache<CacheKey, PooledByteBuffer> encodedCountingMemoryCache,
final ImageCacheStatsTracker imageCacheStatsTracker) {
imageCacheStatsTracker.registerEncodedMemoryCache(encodedCountingMemoryCache);
MemoryCacheTracker memoryCacheTracker = new MemoryCacheTracker<CacheKey>() {
@Override
public void onCacheHit(CacheKey cacheKey) {
imageCacheStatsTracker.onMemoryCacheHit(cacheKey);
}
@Override
public void onCacheMiss() {
imageCacheStatsTracker.onMemoryCacheMiss();
}
@Override
public void onCachePut() {
imageCacheStatsTracker.onMemoryCachePut();
}
};
return new InstrumentedMemoryCache<>(encodedCountingMemoryCache, memoryCacheTracker);
}
示例12: getByteBufferBackedEncodedImage
import com.facebook.common.memory.PooledByteBuffer; //导入依赖的package包/类
/** Creates a memory-backed encoded image from the stream. The stream is closed. */
protected EncodedImage getByteBufferBackedEncodedImage(
InputStream inputStream,
int length) throws IOException {
CloseableReference<PooledByteBuffer> ref = null;
try {
if (length <= 0) {
ref = CloseableReference.of(mPooledByteBufferFactory.newByteBuffer(inputStream));
} else {
ref = CloseableReference.of(mPooledByteBufferFactory.newByteBuffer(inputStream, length));
}
return new EncodedImage(ref);
} finally {
Closeables.closeQuietly(inputStream);
CloseableReference.closeSafely(ref);
}
}
示例13: createProducerFactory
import com.facebook.common.memory.PooledByteBuffer; //导入依赖的package包/类
ProducerFactory createProducerFactory(
Context context,
ByteArrayPool byteArrayPool,
ImageDecoder imageDecoder,
ProgressiveJpegConfig progressiveJpegConfig,
boolean downsampleEnabled,
boolean resizeAndRotateEnabledForNetwork,
boolean decodeCancellationEnabled,
Supplier<Boolean> experimentalSmartResizingEnabled,
ExecutorSupplier executorSupplier,
PooledByteBufferFactory pooledByteBufferFactory,
MemoryCache<CacheKey, CloseableImage> bitmapMemoryCache,
MemoryCache<CacheKey, PooledByteBuffer> encodedMemoryCache,
BufferedDiskCache defaultBufferedDiskCache,
BufferedDiskCache smallImageBufferedDiskCache,
MediaVariationsIndex mediaVariationsIndex,
CacheKeyFactory cacheKeyFactory,
PlatformBitmapFactory platformBitmapFactory,
int bitmapPrepareToDrawMinSizeBytes,
int bitmapPrepareToDrawMaxSizeBytes,
boolean bitmapPrepareToDrawForPrefetch);
示例14: getEncodedImageProducerSequence
import com.facebook.common.memory.PooledByteBuffer; //导入依赖的package包/类
/**
* Returns a sequence that can be used for a request for an encoded image from either network or
* local files.
*
* @param imageRequest the request that will be submitted
* @return the sequence that should be used to process the request
*/
public Producer<CloseableReference<PooledByteBuffer>> getEncodedImageProducerSequence(
ImageRequest imageRequest) {
validateEncodedImageRequest(imageRequest);
final Uri uri = imageRequest.getSourceUri();
switch (imageRequest.getSourceUriType()) {
case SOURCE_TYPE_NETWORK:
return getNetworkFetchEncodedImageProducerSequence();
case SOURCE_TYPE_LOCAL_VIDEO_FILE:
case SOURCE_TYPE_LOCAL_IMAGE_FILE:
return getLocalFileFetchEncodedImageProducerSequence();
default:
throw new IllegalArgumentException(
"Unsupported uri scheme for encoded image fetch! Uri is: "
+ getShortenedUriString(uri));
}
}
示例15: ImagePipeline
import com.facebook.common.memory.PooledByteBuffer; //导入依赖的package包/类
public ImagePipeline(
ProducerSequenceFactory producerSequenceFactory,
Set<RequestListener> requestListeners,
Supplier<Boolean> isPrefetchEnabledSupplier,
MemoryCache<CacheKey, CloseableImage> bitmapMemoryCache,
MemoryCache<CacheKey, PooledByteBuffer> encodedMemoryCache,
BufferedDiskCache mainBufferedDiskCache,
BufferedDiskCache smallImageBufferedDiskCache,
CacheKeyFactory cacheKeyFactory,
ThreadHandoffProducerQueue threadHandoffProducerQueue,
Supplier<Boolean> suppressBitmapPrefetchingSupplier) {
mIdCounter = new AtomicLong();
mProducerSequenceFactory = producerSequenceFactory;
mRequestListener = new ForwardingRequestListener(requestListeners);
mIsPrefetchEnabledSupplier = isPrefetchEnabledSupplier;
mBitmapMemoryCache = bitmapMemoryCache;
mEncodedMemoryCache = encodedMemoryCache;
mMainBufferedDiskCache = mainBufferedDiskCache;
mSmallImageBufferedDiskCache = smallImageBufferedDiskCache;
mCacheKeyFactory = cacheKeyFactory;
mThreadHandoffProducerQueue = threadHandoffProducerQueue;
mSuppressBitmapPrefetchingSupplier = suppressBitmapPrefetchingSupplier;
}