mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-11-27 10:32:37 +00:00
Video editor fixes
This commit is contained in:
parent
be8086b3d5
commit
e412e21db8
@ -1451,6 +1451,8 @@
|
|||||||
{
|
{
|
||||||
if (fabs(_scrubberView.trimStartValue - adjustments.trimStartValue) > DBL_EPSILON)
|
if (fabs(_scrubberView.trimStartValue - adjustments.trimStartValue) > DBL_EPSILON)
|
||||||
{
|
{
|
||||||
|
UIImage *paintingImage = _paintingImageView.image;
|
||||||
|
|
||||||
[[SQueue concurrentDefaultQueue] dispatch:^
|
[[SQueue concurrentDefaultQueue] dispatch:^
|
||||||
{
|
{
|
||||||
AVAssetImageGenerator *generator = [[AVAssetImageGenerator alloc] initWithAsset:_player.currentItem.asset];
|
AVAssetImageGenerator *generator = [[AVAssetImageGenerator alloc] initWithAsset:_player.currentItem.asset];
|
||||||
@ -1476,8 +1478,8 @@
|
|||||||
|
|
||||||
[image drawInRect:CGRectMake(0, 0, fillSize.width, fillSize.height)];
|
[image drawInRect:CGRectMake(0, 0, fillSize.width, fillSize.height)];
|
||||||
|
|
||||||
if (_paintingImageView.image != nil)
|
if (paintingImage != nil)
|
||||||
[_paintingImageView.image drawInRect:CGRectMake(0, 0, fillSize.width, fillSize.height)];
|
[paintingImage drawInRect:CGRectMake(0, 0, fillSize.width, fillSize.height)];
|
||||||
|
|
||||||
thumbnailImage = UIGraphicsGetImageFromCurrentImageContext();
|
thumbnailImage = UIGraphicsGetImageFromCurrentImageContext();
|
||||||
UIGraphicsEndImageContext();
|
UIGraphicsEndImageContext();
|
||||||
|
|||||||
@ -382,17 +382,36 @@
|
|||||||
CIImage *resultImage = request.sourceImage;
|
CIImage *resultImage = request.sourceImage;
|
||||||
|
|
||||||
CGSize size;
|
CGSize size;
|
||||||
CGPoint offset = CGPointZero;
|
CGPoint finalOffset = CGPointZero;
|
||||||
if (backgroundCIImage != nil) {
|
if (backgroundCIImage != nil) {
|
||||||
resultImage = backgroundCIImage;
|
resultImage = backgroundCIImage;
|
||||||
size = backgroundCIImage.extent.size;
|
|
||||||
} else if ([adjustments cropAppliedForAvatar:false]) {
|
|
||||||
size = resultImage.extent.size;
|
size = resultImage.extent.size;
|
||||||
|
if ([adjustments cropAppliedForAvatar:false]) {
|
||||||
CGRect cropRect = adjustments.cropRect;
|
CGRect cropRect = adjustments.cropRect;
|
||||||
cropRect = CGRectMake(cropRect.origin.x, size.height - cropRect.size.height - cropRect.origin.y, cropRect.size.width, cropRect.size.height);
|
CGFloat ratio = resultImage.extent.size.width / cropRect.size.width;
|
||||||
offset = CGPointMake(cropRect.origin.x, -cropRect.origin.y);
|
|
||||||
|
CGSize extendedSize = CGSizeMake(adjustments.originalSize.width * ratio, adjustments.originalSize.height * ratio);
|
||||||
|
CIImage *image = [[CIImage alloc] initWithColor:[CIColor colorWithRed:0.0f green:0.0f blue:0.0f]];
|
||||||
|
image = [image imageByCroppingToRect:CGRectMake(0.0, 0.0, extendedSize.width, extendedSize.height)];
|
||||||
|
|
||||||
|
cropRect = CGRectMake(cropRect.origin.x * ratio, (adjustments.originalSize.height - cropRect.size.height - cropRect.origin.y) * ratio, cropRect.size.width * ratio, cropRect.size.height * ratio);
|
||||||
|
|
||||||
|
resultImage = [resultImage imageByApplyingTransform:CGAffineTransformMakeTranslation(cropRect.origin.x, cropRect.origin.y)];
|
||||||
|
finalOffset = CGPointMake(-cropRect.origin.x, -cropRect.origin.y);
|
||||||
|
|
||||||
|
image = [resultImage imageByCompositingOverImage:image];
|
||||||
|
resultImage = image;
|
||||||
|
|
||||||
|
size = resultImage.extent.size;
|
||||||
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
size = resultImage.extent.size;
|
size = resultImage.extent.size;
|
||||||
|
if ([adjustments cropAppliedForAvatar:false]) {
|
||||||
|
CGRect cropRect = adjustments.cropRect;
|
||||||
|
cropRect = CGRectMake(cropRect.origin.x, adjustments.originalSize.height - cropRect.size.height - cropRect.origin.y, cropRect.size.width, cropRect.size.height);
|
||||||
|
finalOffset = CGPointMake(-cropRect.origin.x, -cropRect.origin.y);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void (^process)(CIImage *, void(^)(void)) = ^(CIImage *resultImage, void(^unlock)(void)) {
|
void (^process)(CIImage *, void(^)(void)) = ^(CIImage *resultImage, void(^unlock)(void)) {
|
||||||
@ -411,15 +430,15 @@
|
|||||||
for (CIImage *image in images) {
|
for (CIImage *image in images) {
|
||||||
mergedImage = [image imageByCompositingOverImage:mergedImage];
|
mergedImage = [image imageByCompositingOverImage:mergedImage];
|
||||||
}
|
}
|
||||||
if (!CGPointEqualToPoint(offset, CGPointZero)) {
|
if (!CGPointEqualToPoint(finalOffset, CGPointZero)) {
|
||||||
mergedImage = [mergedImage imageByApplyingTransform:CGAffineTransformMakeTranslation(offset.x, offset.y)];
|
mergedImage = [mergedImage imageByApplyingTransform:CGAffineTransformMakeTranslation(finalOffset.x, finalOffset.y)];
|
||||||
}
|
}
|
||||||
[request finishWithImage:mergedImage context:ciContext];
|
[request finishWithImage:mergedImage context:ciContext];
|
||||||
unlock();
|
unlock();
|
||||||
}];
|
}];
|
||||||
} else {
|
} else {
|
||||||
if (!CGPointEqualToPoint(offset, CGPointZero)) {
|
if (!CGPointEqualToPoint(finalOffset, CGPointZero)) {
|
||||||
resultImage = [resultImage imageByApplyingTransform:CGAffineTransformMakeTranslation(offset.x, offset.y)];
|
resultImage = [resultImage imageByApplyingTransform:CGAffineTransformMakeTranslation(finalOffset.x, finalOffset.y)];
|
||||||
}
|
}
|
||||||
[request finishWithImage:resultImage context:ciContext];
|
[request finishWithImage:resultImage context:ciContext];
|
||||||
unlock();
|
unlock();
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user