本篇文章给大家谈谈Image.Save,以及..抛出GDI+异常,因为内存流已关闭的知识点,同时本文还将给你拓展activemq异常,调整storeUsage配置、C#Image.Save()原因保存
本篇文章给大家谈谈Image.Save,以及..抛出GDI +异常,因为内存流已关闭的知识点,同时本文还将给你拓展activemq异常,调整storeUsage配置、C# Image.Save() 原因 保存 JPG 文件时无法访问关闭的流(PNG 有效)、c# – 上传到内存流时无法访问已关闭的文件、com.facebook.imagepipeline.image.CloseableAnimatedImage的实例源码等相关知识,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:- Image.Save(..)抛出GDI +异常,因为内存流已关闭
- activemq异常,调整storeUsage配置
- C# Image.Save() 原因 保存 JPG 文件时无法访问关闭的流(PNG 有效)
- c# – 上传到内存流时无法访问已关闭的文件
- com.facebook.imagepipeline.image.CloseableAnimatedImage的实例源码
Image.Save(..)抛出GDI +异常,因为内存流已关闭
我有一些要保存为图像的二进制数据。当我尝试保存图像时,如果用于保存图像的内存流在保存之前已关闭,则会引发异常。我这样做的原因是因为我正在动态创建图像,因此我需要使用内存流。
这是代码:
[TestMethod]public void TestMethod1(){ // Grab the binary data. byte[] data = File.ReadAllBytes("Chick.jpg"); // Read in the data but do not close, before using the stream. Stream originalBinaryDataStream = new MemoryStream(data); Bitmap image = new Bitmap(originalBinaryDataStream); image.Save(@"c:\test.jpg"); originalBinaryDataStream.Dispose(); // Now lets use a nice dispose, etc... Bitmap2 image2; using (Stream originalBinaryDataStream2 = new MemoryStream(data)) { image2 = new Bitmap(originalBinaryDataStream2); } image2.Save(@"C:\temp\pewpew.jpg"); // This throws the GDI+ exception.}
有谁对我如何在关闭流的情况下保存图像有任何建议?保存图像后,我不能依靠开发人员记住关闭流。实际上,开发人员不会想到该图像是使用内存流生成的(因为它发生在其他地方的其他代码中)。
我真的很困惑:(
答案1
小编典典由于它是MemoryStream,因此您实际上 不需要 关闭流-
如果不这样做,则不会发生任何不好的事情,尽管显然,处置任何一次性的东西都是一种好习惯。(有关更多信息,请参见此问题。)
但是,您 应该 处理位图-
这样将为您关闭流。基本上,一旦给Bitmap构造函数一个流,它就“拥有”该流,并且您不应该关闭它。正如该构造函数的文档所述:
您必须在位图的生存期内保持流打开。
放置位图时,我找不到任何承诺关闭流的文档,但是您应该能够轻松地进行验证。
activemq异常,调整storeUsage配置
activemq日志发现报错Frame size of 1140 MB larger than max allowed 100 MB超限,导致activemq堵塞,将storeUsage limit调大后恢复。
日志:
2017-03-14 11:34:16,974 | WARN | Transport Connection to: tcp://x.x.x.x:54207 failed: java.io.IOException: Frame size of 1140 MB larger than max allowed 100 MB | org.apache.activemq.broker.TransportConnection.Transport | ActiveMQ Transport: tcp:///x.x.x.x:54207@6160
配置文件activemq.xml
-->
<systemUsage>
<systemUsage>
<memoryUsage>
<memoryUsage percentOfJvmHeap="70" />
</memoryUsage>
<storeUsage>
<storeUsage limit="10 gb"/>
</storeUsage>
<tempUsage>
<tempUsage limit="10 gb"/>
</tempUsage>
</systemUsage>
</systemUsage>
C# Image.Save() 原因 保存 JPG 文件时无法访问关闭的流(PNG 有效)
如何解决C# Image.Save() 原因 保存 JPG 文件时无法访问关闭的流(PNG 有效)?
我有奇怪的行为。
我有一个代码,当我将 byte[] 数组发送到图像(有时是 png,有时是 jpg)时。
当我保存 PNG 格式时 - 一切正常,但是当我尝试保存 JPG 时,有一个例外:“无法访问关闭的流”
代码:
imgTarget.Save(wwwroot + "\\ImageBank\\" + TaskRunID + "_" + TestCaseID + "_" + TestDataID + "_" + ImageCounter + Extension,ImageFormat.Jpeg);
我检查了什么:
- imgTarget 不为空
- imgTarget 包含正确的数据(即使 RawFormat 应该是 Png 或 Jpeg)
- imgTarget.Save() 抛出异常:System.ObjectdisposedException:''无法访问关闭的流。''
- 我尝试使用位图 - 将 imgTarget 复制到新位图,然后保存(结果相同)
- 我尝试调用 Save() 方法,并将 ImageFormat 参数正确设置为 jpeg 或 png(结果相同)-对于 Image.Save() 和 Bitmap.Save()
- 我检查了正确的路径和文件名(没问题)(在本例中为 C:\MyProd\wwwroot\ImageBank\10611_8_-1_1.jpeg)
奇怪的是 imgTarget 在调用方法 Save() 之前包含数据 - 但在它为 null/disposed 之后...
有人有什么想法吗?
编辑:
我准备了一些以同样方式失败的代码 - 它在最后一行失败。Save()
// This contains only the URL for the downloading of the file
string url = $"***url to download jpg file***";
// Request for the API - which downloads the jpg file via GET and provide the RawData via Response.RawBytes
APIRequest request = new APIRequest(RestSharp.Method.GET,url,new Authentication("user","password","-1"));
// Test case is only class which calls RestSharp (get png or jpg file)
TestCase t = new TestCase();
// This downloads the jpg file and store it as byte[] in t.GetDataFromAPI
t.API(request);
// Using downloaded data as byte[]
byte[] APIImageSource = t.GetDataFromAPI;
// Default extensions for saving files is .png
string Extension = ".png";
Image imgTarget;
// Now I use bytes[] and convert them into the image
imgTarget = ConvertBytesToImage(APIImageSource);
if (t.GetimageFormat(APIImageSource) == ExpectedFormat.JPEG)
{
Extension = ".jpeg";
}
string path = "C:\\Temp\\filename" + Extension;
imgTarget.Save(path + Extension,ImageFormat.Jpeg);
有方法 ConvertBytesToImage:
internal static Image ConvertBytesToImage(byte[] bytes)
{
using (var ms = new MemoryStream(bytes))
{
return Image.FromStream(ms);
}
}
解决方法
@Simon Mourier 的评论是解决方案:
删除 MemoryStream 上的 using,或删除 ConvertBytesToImage 并保持 MemoryStream 处于活动状态,直到您完全保存图像。 – 西蒙·穆里埃 1 分钟前
我不明白为什么,但我已经删除了 using 语句,现在它可以工作了。
谢谢大家
c# – 上传到内存流时无法访问已关闭的文件
/// <summary> /// Handles an upload /// </summary> /// <returns></returns> [HttpPost] [Route("")] public async Task<IHttpActionResult> Upload() { // If the request is not of multipart content,then return a bad request if (!Request.Content.IsMimeMultipartContent()) return BadRequest("Your form must be of type multipartcontent."); // Get our provider var provider = new MultipartFormDataStreamProvider(ConfigurationManager.AppSettings["UploadFolder"]); // Upload our file await Request.Content.ReadAsMultipartAsync(provider); // Get our file var file = provider.Contents.First(); var bytes = await file.ReadAsByteArrayAsync(); // Using a MemoryStream using (var stream = new MemoryStream(bytes)) { stream.Seek(0,SeekOrigin.Begin); // Create the data var data = "data:image/gif;base64," + Convert.ToBase64String(stream.ToArray()); // Return the data return Ok(data); } }
但它没有用.
当我进入使用块时,我收到一条错误消息:
“Error while copying content to a stream.”
“Cannot access a closed file.”
有谁知道为什么?
解决方法
要访问已上载的文件,您需要从上载的文件位置查询磁盘上的文件数据:
因此,在您的示例中,您的代码需要使用此代码:
// Read the first file from the file data collection: var fileupload = provider.FileData.First; // Get the temp name and path that MultipartFormDataStreamProvider used to save the file as: var temppath = fileupload.LocalFileName; // Now read the file's data from the temp location. var bytes = File.ReadAllBytes(temppath);
此外,如果您使用非常小的文件,您可以使用:
MultipartMemoryStreamProvider
这会将文件数据存储在内存中,并且应该按预期工作.但是,如果您正在使用大文件(25mb),请先警告它首先流式传输到磁盘,否则您可能会出现内存异常,因为.net会尝试将整个文件保存在内存中.
com.facebook.imagepipeline.image.CloseableAnimatedImage的实例源码
private Drawable createDrawableFromFetchedResult(Context context,CloseableImage image) { if (image instanceof CloseableStaticBitmap) { CloseableStaticBitmap closeableStaticBitmap = (CloseableStaticBitmap) image; BitmapDrawable bitmapDrawable = createBitmapDrawable(context,closeableStaticBitmap.getUnderlyingBitmap()); return (closeableStaticBitmap.getRotationAngle() != 0 && closeableStaticBitmap.getRotationAngle() != -1 ? new OrientedDrawable(bitmapDrawable,closeableStaticBitmap.getRotationAngle()) : bitmapDrawable); } else if (image instanceof CloseableAnimatedImage) { AnimatedDrawableFactory animatedDrawableFactory = Fresco.getimagePipelineFactory().getAnimatedFactory().getAnimatedDrawableFactory(context); if (animatedDrawableFactory != null) { AnimatedDrawable animatedDrawable = (AnimatedDrawable) animatedDrawableFactory.create(image); if (animatedDrawable != null) { return animatedDrawable; } } } throw new UnsupportedOperationException("Unrecognized image class: " + image); }
@Test public void testNonStaticBitmapIsPassedOn() { SingleUsePostprocessorConsumer postprocessorConsumer = produceResults(); CloseableAnimatedImage sourceCloseableAnimatedImage = mock(CloseableAnimatedImage.class); CloseableReference<CloseableImage> sourceCloseableImageRef = CloseableReference.<CloseableImage>of(sourceCloseableAnimatedImage); postprocessorConsumer.onNewResult(sourceCloseableImageRef,Consumer.IS_LAST); sourceCloseableImageRef.close(); mTestExecutorService.runUntilIdle(); mInorder.verify(mConsumer).onNewResult(any(CloseableReference.class),eq(Consumer.IS_LAST)); mInorder.verifyNoMoreInteractions(); assertEquals(1,mResults.size()); CloseableReference<CloseableImage> res0 = mResults.get(0); assertTrue(CloseableReference.isValid(res0)); assertSame(sourceCloseableAnimatedImage,res0.get()); res0.close(); verify(sourceCloseableAnimatedImage).close(); }
@Test public void testNonStaticBitmapIsPassedOn() { RepeatedPostprocessorConsumer postprocessorConsumer = produceResults(); RepeatedPostprocessorRunner repeatedPostprocessorRunner = getRunner(); CloseableAnimatedImage sourceCloseableAnimatedImage = mock(CloseableAnimatedImage.class); CloseableReference<CloseableImage> sourceCloseableImageRef = CloseableReference.<CloseableImage>of(sourceCloseableAnimatedImage); postprocessorConsumer.onNewResult(sourceCloseableImageRef,eq(Consumer.NO_FLAGS)); mInorder.verifyNoMoreInteractions(); assertEquals(1,res0.get()); res0.close(); performCancelAndVerifyOnCancellation(); verify(sourceCloseableAnimatedImage).close(); }
private Drawable createDrawableFromFetchedResult(Context context,closeableStaticBitmap.getRotationAngle()) : bitmapDrawable); } else if (image instanceof CloseableAnimatedImage) { AnimatedDrawableFactory animatedDrawableFactory = Fresco.getimagePipelineFactory().getAnimatedFactory().getAnimatedDrawableFactory(context); if (animatedDrawableFactory != null) { AnimatedDrawable animatedDrawable = (AnimatedDrawable) animatedDrawableFactory.create(image); if (animatedDrawable != null) { return animatedDrawable; } } } throw new UnsupportedOperationException("Unrecognized image class: " + image); }
@Test public void testNonStaticBitmapIsPassedOn() { SingleUsePostprocessorConsumer postprocessorConsumer = produceResults(); CloseableAnimatedImage sourceCloseableAnimatedImage = mock(CloseableAnimatedImage.class); CloseableReference<CloseableImage> sourceCloseableImageRef = CloseableReference.<CloseableImage>of(sourceCloseableAnimatedImage); postprocessorConsumer.onNewResult(sourceCloseableImageRef,res0.get()); res0.close(); verify(sourceCloseableAnimatedImage).close(); }
@Test public void testNonStaticBitmapIsPassedOn() { RepeatedPostprocessorConsumer postprocessorConsumer = produceResults(); RepeatedPostprocessorRunner repeatedPostprocessorRunner = getRunner(); CloseableAnimatedImage sourceCloseableAnimatedImage = mock(CloseableAnimatedImage.class); CloseableReference<CloseableImage> sourceCloseableImageRef = CloseableReference.<CloseableImage>of(sourceCloseableAnimatedImage); postprocessorConsumer.onNewResult(sourceCloseableImageRef,res0.get()); res0.close(); performCancelAndVerifyOnCancellation(); verify(sourceCloseableAnimatedImage).close(); }
private CloseableImage getCloseableImage( ImageDecodeOptions options,AnimatedImage image,Bitmap.Config bitmapConfig) { List<CloseableReference<Bitmap>> decodedFrames = null; CloseableReference<Bitmap> previewBitmap = null; try { final int frameForPreview = options.useLastFrameForPreview ? image.getFrameCount() - 1 : 0; if (options.forceStaticImage) { return new CloseableStaticBitmap( createPreviewBitmap(image,bitmapConfig,frameForPreview),ImmutableQualityInfo.FULL_QUALITY,0); } if (options.decodeAllFrames) { decodedFrames = decodeAllFrames(image,bitmapConfig); previewBitmap = CloseableReference.cloneOrNull(decodedFrames.get(frameForPreview)); } if (options.decodePreviewFrame && previewBitmap == null) { previewBitmap = createPreviewBitmap(image,frameForPreview); } AnimatedImageResult animatedImageResult = AnimatedImageResult.newBuilder(image) .setPreviewBitmap(previewBitmap) .setFrameForPreview(frameForPreview) .setDecodedFrames(decodedFrames) .build(); return new CloseableAnimatedImage(animatedImageResult); } finally { CloseableReference.closeSafely(previewBitmap); CloseableReference.closeSafely(decodedFrames); } }
@Test public void testCreateDefaults() { WebPImage mockWebPImage = mock(WebPImage.class); // Expect a call to WebPImage.create TrivialPooledByteBuffer byteBuffer = createByteBuffer(); when(mWebPImageMock.decode(byteBuffer.getNativePtr(),byteBuffer.size())) .thenReturn(mockWebPImage); EncodedImage encodedImage = new EncodedImage( CloseableReference.of(byteBuffer,FAKE_RESOURCE_RELEASER)); encodedImage.setimageFormat(ImageFormat.UNKNowN); CloseableAnimatedImage closeableImage = (CloseableAnimatedImage) mAnimatedImageFactory.decodeWebP( encodedImage,ImageDecodeOptions.defaults(),DEFAULT_BITMAP_CONfig); // Verify we got the right result AnimatedImageResult imageResult = closeableImage.getimageResult(); assertSame(mockWebPImage,imageResult.getimage()); assertNull(imageResult.getPreviewBitmap()); assertFalse(imageResult.hasDecodedFrame(0)); // Should not have interacted with these. verifyZeroInteractions(mMockAnimatedDrawableBackendProvider); verifyZeroInteractions(mMockBitmapFactory); }
@Test public void testCreateDefaults() { GifImage mockGifImage = mock(GifImage.class); // Expect a call to GifImage.create TrivialPooledByteBuffer byteBuffer = createByteBuffer(); when(mGifImageMock.decode(byteBuffer.getNativePtr(),byteBuffer.size())) .thenReturn(mockGifImage); EncodedImage encodedImage = new EncodedImage( CloseableReference.of(byteBuffer,FAKE_RESOURCE_RELEASER)); encodedImage.setimageFormat(ImageFormat.UNKNowN); CloseableAnimatedImage closeableImage = (CloseableAnimatedImage) mAnimatedImageFactory.decodeGif( encodedImage,DEFAULT_BITMAP_CONfig); // Verify we got the right result AnimatedImageResult imageResult = closeableImage.getimageResult(); assertSame(mockGifImage,imageResult.getimage()); assertNull(imageResult.getPreviewBitmap()); assertFalse(imageResult.hasDecodedFrame(0)); // Should not have interacted with these. verifyZeroInteractions(mMockAnimatedDrawableBackendProvider); verifyZeroInteractions(mMockBitmapFactory); }
private CloseableImage getCloseableImage( ImageDecodeOptions options,frameForPreview); } AnimatedImageResult animatedImageResult = AnimatedImageResult.newBuilder(image) .setPreviewBitmap(previewBitmap) .setFrameForPreview(frameForPreview) .setDecodedFrames(decodedFrames) .build(); return new CloseableAnimatedImage(animatedImageResult); } finally { CloseableReference.closeSafely(previewBitmap); CloseableReference.closeSafely(decodedFrames); } }
@Test public void testCreateDefaults() { WebPImage mockWebPImage = mock(WebPImage.class); // Expect a call to WebPImage.create TrivialPooledByteBuffer byteBuffer = createByteBuffer(); when(mWebPImageMock.decode(byteBuffer.getNativePtr(),imageResult.getimage()); assertNull(imageResult.getPreviewBitmap()); assertFalse(imageResult.hasDecodedFrame(0)); // Should not have interacted with these. verifyZeroInteractions(mMockAnimatedDrawableBackendProvider); verifyZeroInteractions(mMockBitmapFactory); }
@Test public void testCreateDefaults() { GifImage mockGifImage = mock(GifImage.class); // Expect a call to GifImage.create TrivialPooledByteBuffer byteBuffer = createByteBuffer(); when(mGifImageMock.decode(byteBuffer.getNativePtr(),imageResult.getimage()); assertNull(imageResult.getPreviewBitmap()); assertFalse(imageResult.hasDecodedFrame(0)); // Should not have interacted with these. verifyZeroInteractions(mMockAnimatedDrawableBackendProvider); verifyZeroInteractions(mMockBitmapFactory); }
@Override public boolean supportsImageType(CloseableImage image) { return image instanceof CloseableAnimatedImage; }
@Override public AnimatedDrawable2 createDrawable(CloseableImage image) { return new AnimatedDrawable2( createAnimationBackend( ((CloseableAnimatedImage) image).getimageResult())); }
@Test public void testCreateWithPreviewBitmap() throws Exception { WebPImage mockWebPImage = mock(WebPImage.class); Bitmap mockBitmap = MockBitmapFactory.create(50,50,DEFAULT_BITMAP_CONfig); // Expect a call to WebPImage.create TrivialPooledByteBuffer byteBuffer = createByteBuffer(); when(mWebPImageMock.decode(byteBuffer.getNativePtr(),byteBuffer.size())) .thenReturn(mockWebPImage); when(mockWebPImage.getWidth()).thenReturn(50); when(mockWebPImage.getHeight()).thenReturn(50); // For decoding preview frame,expect some calls. final AnimatedDrawableBackend mockAnimatedDrawableBackend = createAnimatedDrawableBackendMock(1); when(mMockAnimatedDrawableBackendProvider.get( any(AnimatedImageResult.class),isNull(Rect.class))) .thenReturn(mockAnimatedDrawableBackend); when(mMockBitmapFactory.createBitmapInternal(50,DEFAULT_BITMAP_CONfig)) .thenReturn(CloseableReference.of(mockBitmap,FAKE_BITMAP_RESOURCE_RELEASER)); AnimatedImageCompositor mockCompositor = mock(AnimatedImageCompositor.class); powermockito.whenNew(AnimatedImageCompositor.class) .withAnyArguments() .thenReturn(mockCompositor); ImageDecodeOptions imageDecodeOptions = ImageDecodeOptions.newBuilder() .setDecodePreviewFrame(true) .build(); EncodedImage encodedImage = new EncodedImage( CloseableReference.of(byteBuffer,FAKE_RESOURCE_RELEASER)); encodedImage.setimageFormat(ImageFormat.UNKNowN); CloseableAnimatedImage closeableImage = (CloseableAnimatedImage) mAnimatedImageFactory.decodeWebP( encodedImage,imageDecodeOptions,imageResult.getimage()); assertNotNull(imageResult.getPreviewBitmap()); assertFalse(imageResult.hasDecodedFrame(0)); // Should not have interacted with these. verify(mMockAnimatedDrawableBackendProvider).get( any(AnimatedImageResult.class),isNull(Rect.class)); verifyNoMoreInteractions(mMockAnimatedDrawableBackendProvider); verify(mMockBitmapFactory).createBitmapInternal(50,DEFAULT_BITMAP_CONfig); verifyNoMoreInteractions(mMockBitmapFactory); verify(mockCompositor).renderFrame(0,mockBitmap); }
@Test public void testCreateWithDecodeAlFrames() throws Exception { WebPImage mockWebPImage = mock(WebPImage.class); Bitmap mockBitmap1 = MockBitmapFactory.create(50,DEFAULT_BITMAP_CONfig); Bitmap mockBitmap2 = MockBitmapFactory.create(50,expect some calls. final AnimatedDrawableBackend mockAnimatedDrawableBackend = createAnimatedDrawableBackendMock(2); when( mMockAnimatedDrawableBackendProvider.get( any(AnimatedImageResult.class),isNull(Rect.class))) .thenReturn(mockAnimatedDrawableBackend); when(mMockBitmapFactory.createBitmapInternal(50,DEFAULT_BITMAP_CONfig)) .thenReturn(CloseableReference.of(mockBitmap1,FAKE_BITMAP_RESOURCE_RELEASER)) .thenReturn(CloseableReference.of(mockBitmap2,FAKE_BITMAP_RESOURCE_RELEASER)); AnimatedImageCompositor mockCompositor = mock(AnimatedImageCompositor.class); powermockito.whenNew(AnimatedImageCompositor.class) .withAnyArguments() .thenReturn(mockCompositor); ImageDecodeOptions imageDecodeOptions = ImageDecodeOptions.newBuilder() .setDecodePreviewFrame(true) .setDecodeAllFrames(true) .build(); EncodedImage encodedImage = new EncodedImage( CloseableReference.of(byteBuffer,imageResult.getimage()); assertNotNull(imageResult.getDecodedFrame(0)); assertNotNull(imageResult.getDecodedFrame(1)); assertNotNull(imageResult.getPreviewBitmap()); // Should not have interacted with these. verify(mMockAnimatedDrawableBackendProvider).get( any(AnimatedImageResult.class),isNull(Rect.class)); verifyNoMoreInteractions(mMockAnimatedDrawableBackendProvider); verify(mMockBitmapFactory,times(2)).createBitmapInternal(50,mockBitmap1); verify(mockCompositor).renderFrame(1,mockBitmap2); }
@Test public void testCreateWithPreviewBitmap() throws Exception { GifImage mockGifImage = mock(GifImage.class); Bitmap mockBitmap = MockBitmapFactory.create(50,DEFAULT_BITMAP_CONfig); // Expect a call to WebPImage.create TrivialPooledByteBuffer byteBuffer = createByteBuffer(); when(mGifImageMock.decode(byteBuffer.getNativePtr(),byteBuffer.size())) .thenReturn(mockGifImage); when(mockGifImage.getWidth()).thenReturn(50); when(mockGifImage.getHeight()).thenReturn(50); // For decoding preview frame,expect some calls. final AnimatedDrawableBackend mockAnimatedDrawableBackend = createAnimatedDrawableBackendMock(1); when(mMockAnimatedDrawableBackendProvider.get( any(AnimatedImageResult.class),FAKE_RESOURCE_RELEASER)); encodedImage.setimageFormat(ImageFormat.UNKNowN); CloseableAnimatedImage closeableImage = (CloseableAnimatedImage) mAnimatedImageFactory.decodeGif( encodedImage,mockBitmap); }
@Test public void testCreateWithDecodeAlFrames() throws Exception { GifImage mockGifImage = mock(GifImage.class); Bitmap mockBitmap1 = MockBitmapFactory.create(50,DEFAULT_BITMAP_CONfig); // Expect a call to GifImage.create TrivialPooledByteBuffer byteBuffer = createByteBuffer(); when(mGifImageMock.decode(byteBuffer.getNativePtr(),expect some calls. final AnimatedDrawableBackend mockAnimatedDrawableBackend = createAnimatedDrawableBackendMock(2); when( mMockAnimatedDrawableBackendProvider.get( any(AnimatedImageResult.class),mockBitmap2); }
@Override public boolean supportsImageType(CloseableImage image) { return image instanceof CloseableAnimatedImage; }
@Override public AnimatedDrawable2 createDrawable(CloseableImage image) { return new AnimatedDrawable2( createAnimationBackend( ((CloseableAnimatedImage) image).getimageResult())); }
@Test public void testCreateWithPreviewBitmap() throws Exception { WebPImage mockWebPImage = mock(WebPImage.class); Bitmap mockBitmap = MockBitmapFactory.create(50,mockBitmap); }
@Test public void testCreateWithDecodeAlFrames() throws Exception { WebPImage mockWebPImage = mock(WebPImage.class); Bitmap mockBitmap1 = MockBitmapFactory.create(50,mockBitmap2); }
@Test public void testCreateWithPreviewBitmap() throws Exception { GifImage mockGifImage = mock(GifImage.class); Bitmap mockBitmap = MockBitmapFactory.create(50,mockBitmap); }
@Test public void testCreateWithDecodeAlFrames() throws Exception { GifImage mockGifImage = mock(GifImage.class); Bitmap mockBitmap1 = MockBitmapFactory.create(50,mockBitmap2); }
private void handleAnimateBitmap(CloseableAnimatedImage animatedImage,int position) { AnimatedDrawableFactory animatedDrawableFactory = Fresco.getimagePipelineFactory().getAnimatedDrawableFactory(); AnimatedDrawable drawable = animatedDrawableFactory.create(animatedImage.getimageResult()); Bitmap bitmap = drawable2Bitmap(drawable); map.put(position,bitmap); }
关于Image.Save和..抛出GDI +异常,因为内存流已关闭的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于activemq异常,调整storeUsage配置、C# Image.Save() 原因 保存 JPG 文件时无法访问关闭的流(PNG 有效)、c# – 上传到内存流时无法访问已关闭的文件、com.facebook.imagepipeline.image.CloseableAnimatedImage的实例源码等相关知识的信息别忘了在本站进行查找喔。
本文标签: