0

私のアプリケーションでは、ユーザーはカメラで写真を撮ったり、写真ライブラリから選択したりできます。

投稿画像の解像度は650X550でお願いします

しかし、私は見る:

このコードの後のサイズは 320X480 です

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo
    {
        chosenImage = image;
        NSLog(@"The widht is %f",image.size.width);
        NSLog(@"The height is %f",image.size.height);
    }

このように画像を送信すると、サーバー側で 1024X480 で取得します

 NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"https://myurl/upload/"] cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:60];
    [request setHTTPMethod:@"POST"];
    NSMutableData *body = [NSMutableData data];
    NSString *boundary = @"---------------------------14737809831466499882746641449";
    NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@", boundary];
    [request addValue:contentType forHTTPHeaderField:@"Content-Type"];
    NSData *imageData = UIImageJPEGRepresentation(appDelegate.chosenImage, 0.5);
    // file
    [body appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
    [body appendData:[@"Content-Disposition: form-data; name=\"file\"; filename=\"iphone.jpg\"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
    [body appendData:[@"Content-Type: application/octet-stream\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
    [body appendData:[NSData dataWithData:imageData]];
    [body appendData:[@"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
    // close form
    [body appendData:[[NSString stringWithFormat:@"--%@--\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
    // set request body
    [request setHTTPBody:body];

サーバー側のコードに 650X550 (objcetive-c で宣言したサイズ) として取得したい

通常の HTML ページでバックエンド コードに送信しようとすると、1024X480 ではなく元のサイズの画像が送信されます。

画像を元のサイズで取得するにはどうすればよいですか?

4

1 に答える 1

1

ピッカーから取得するサイズには影響しませんが、はるかに大きくする必要があります

アップロード前に手動でスケーリングできます

#import <UIKit/UIKit.h>
@interface UIImage (Resize)
- (UIImage*)scaleToSize:(CGSize)size;
@end

@implementation UIImage (Resizing)

- (UIImage*)scaleToSize:(CGSize)size {
    UIGraphicsBeginImageContext(size);

    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextTranslateCTM(context, 0.0, size.height);
    CGContextScaleCTM(context, 1.0, -1.0);

    CGContextDrawImage(context, CGRectMake(0.0f, 0.0f, size.width, size.height), self.CGImage);

    UIImage* scaledImage = UIGraphicsGetImageFromCurrentImageContext();

    UIGraphicsEndImageContext();

    return scaledImage;
}
@end

デモ:

オブジェクト側:

UIImage *demo = [UIImage imageNamed:@"demo.jpg"];
UIImage *scaledImage = [demo scaleToSize:CGSizeMake(650, 550)];

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://www.pich.info/test.php"] cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:60];
[request setHTTPMethod:@"POST"];
NSMutableData *body = [NSMutableData data];
NSString *boundary = @"---------------------------14737809831466499882746641449";
NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@", boundary];
[request addValue:contentType forHTTPHeaderField:@"Content-Type"];
NSData *imageData = UIImageJPEGRepresentation(scaledImage, 0.5);
// file
[body appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[@"Content-Disposition: form-data; name=\"file\"; filename=\"iphone.jpg\"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[@"Content-Type: application/octet-stream\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[NSData dataWithData:imageData]];
[body appendData:[@"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
// close form
[body appendData:[[NSString stringWithFormat:@"--%@--\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
// set request body
[request setHTTPBody:body];

[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *r, NSData *d, NSError *e) {
    NSLog(@"response: %@", [[NSString alloc] initWithData:d encoding:NSUTF8StringEncoding]);
}];

<?php 
//copy file IF a file was uploaded

$imgFile = $_FILES['file']['tmp_name'];
if(!file_exists($imgFile))
{
    var_dump($_FILES);
    die("no file uploaded");
}

print " File: $imgFile\n";

$im = imagecreatefromjpeg($imgFile);
$imgWidth = imagesx($im);
$imgHeight = imagesy($im);


print " Width: $imgWidth\n";
print "Height: $imgHeight\n";
print "Format: red:green:blue\n";
于 2012-12-10T09:31:01.807 に答える