Tag Archives: URL

[iPhone] URL주소를 가지고 원격지의 이미지 파일을 UIImage로 읽어오기

UIImage를 이용하여 로컬 리소스 파일로 존재하는 이미지 파일을 읽어오는 것은 많이 해보셨을 것입니다.

이번에는 원격지의 이미지를 읽어오도록 하는 것을 시도해 보겠습니다. 다음의 소스를 참고하세요.

[code]- (void)applicationDidFinishLaunching:(UIApplication *)application {
   
    // 이미지를 읽어올 주소
    NSURL *url = [NSURL URLWithString:@”http://www.segye.com/content/image/2009/01/06/20090106000247_0.jpg”];
    NSData *data = [NSData dataWithContentsOfURL:url];
   
    // 데이터가 정상적으로 읽혔는지 확인한다. 네트워크가 연결되지 않았다면 nil이다.
    if(data) {
        UIImage *image = [[UIImage alloc] initWithData:data];
        UIImageView *view = [[UIImageView alloc] initWithImage:image];
   
        [view setFrame:CGRectMake(0.0f, 0.0f, image.size.width, image.size.height)];
        [window addSubview:view];
        [view release];
        [image release];
    }
    // 데이터를 정상적으로 읽어오지 못했을 경우의 처리
    else
    {
        UILabel *label = [[UILabel alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]];
       
        [label setText:@”Fail…”];
        [label setTextAlignment:UITextAlignmentCenter];
        [window addSubview:label];
        [label release];
    }
   
    [window makeKeyAndVisible];
}[/code]
이 코드에서 중요하게 보아야 할점은 NSData가 nil인지 아닌지를 판단하여 데이터를 가져왔는지 여부를 확인할 수 있다는 점입니다.

또한 가져온 이미지를 UIImage로 읽어들인 후에 size구조체에 접근하여 이미지의 크기를 얻어올 수 있습니다.
사용자 삽입 이미지어이쿠, 꽃보다 남자의 이미지가 아이팟의 가로길이인 320보다 커서 좀 짤렸네요;; 미안하다 잔디야~ㅠㅠ

이미지는 Frame의 가로 세로 길이에 맞춰 늘어나게 됩니다.
1002669745.zip

[Spring] 현재의 URL을 반환하는 메서드

다음은 이번에 필요로 인해 만든 현재 요청한 URL을 반환하는 메서드이다. 물론 파라미터까지 모두 그대로 반환한다.

Spring 프레임워크와 같이 기존의 View(JSP)와 컨트롤러를 호출하게 되는 매핑 URL주소가 다른 경우 request.getRequestURI()  찍어봐도 JSP의 절대 경로만이 나올뿐이다. 그래서 만들어 보았다.

request를 인자로 넘겨주면 현재 URL이 리턴된다.

[code]public static String getURL(HttpServletRequest request)
  {
    Enumeration<?> param = request.getParameterNames();

    StringBuffer strParam = new StringBuffer();
    StringBuffer strURL = new StringBuffer();

    if (param.hasMoreElements())
    {
      strParam.append(“?”);
    }

    while (param.hasMoreElements())
    {
      String name = (String) param.nextElement();
      String value = request.getParameter(name);

      strParam.append(name + “=” + value);

      if (param.hasMoreElements())
      {
        strParam.append(“&”);
      }
  }

  strURL.append(request.getRequestURI());
  strURL.append(strParam);

  return strURL.toString();
}[/code]