0
我在這幾個小時裏一直在撓頭。iOS:在方法調用中沒有得到正確的CGBitmapContextCreate結果
我正在使用以下方法調整2個圖像的大小。一個接一個:
CGImageRef imageReference = [image CGImage];
bytes = malloc(width * height * 4);
NSUInteger bytesPerPixel = 4;
NSUInteger bytesPerRow = bytesPerPixel * width;
NSUInteger bitsPerComponent = 8;
CGContextRef context = CGBitmapContextCreate(bytes, width, height, bitsPerComponent,
bytesPerRow, colorSpaceReference,
kCGImageAlphaPremultipliedLast);
CGContextDrawImage(context, CGRectMake(0, 0, width, height), imageReference);
CGImageRelease(imageReference);
CGContextRelease(context);
它工作正常,沒問題 - 但只有一個圖像。如果我再次調用該方法,例如:image1.size
和image2.size
:
[self resizeImageWithSize:imageSize]; //this is OK.
[self resizeImageWithSize:imageSize]; //this would not come out right
其中圖像尺寸由下式確定。我嘗試翻轉方法的調用順序,第一個總是正確的。
它們不是太大,400 x 300,300 x 360.我只是想調整一個到200 x 200和另一個例如150 x 150.而這些只是png的。
它的作品,但如果我再次調用這個方法,第二個圖像是錯誤的。錯誤的是它弄亂了象紙上的水漬等像素。有時它甚至變得無法識別。
我錯過了什麼很明顯嗎?我試圖free(bytes);
,我不認爲這裏需要,但爲了嘗試,但它仍然沒有帶來任何東西。我是不是正確地釋放/釋放某些東西,以致第二次調用方法時,舊字節數據仍然存在?我只是在這裏猜測。我正在使用ARC。
感謝。但我仍然希望知道爲什麼我的方法是錯誤的。 +1,分享一個不錯的和乾淨的方法,但是。 – Unheilig
@Unheilig,試着在你的代碼和UIGraphicsEndImageContext()之前放置UIGraphicsBeginImageContext(<#CGSize size#>);在你的代碼之後。告訴我,如果它的作品我感興趣:) –
反饋:非常感謝小費,但它並沒有解決它。 – Unheilig