사진
-
사진 위치정보 EXIF 변경하기2018.06.03
-
로마 천사의 다리 건널 때 주의사항2017.10.09
-
야 사진 찍잖아2015.05.29
-
안드로이드 킷캣에서 사진 자르기시 팅기는 현상 임시 해결..?2014.12.15
-
나도 좀 같이 찍자고2013.12.20
-
자 여기 보세요 치즈~2013.09.28
무타공 와이어 액자걸이 후기
내가 구매한 제품은 5개 25100원에 샀는데 지금은 가격이 올라버렸다.
https://item.gmarket.co.kr/Item?goodscode=2919410171
원리는 집 천장 가장자리 몰딩에 클립처럼 끼워서 설치하는 방식이었는데 집에도 몰딩이 되어있었다. 그래서 옳다구나 하고 구매를 하였다. 설치 전 몰딩 두께를 미리 측정하여 적합한지 파악하는게 중요하다. 왜냐하면..
내가 재봤을 때는 딱 알맞는 두께여서 신청을 했는데 안쪽 두께는 1.3 cm, 밑 부분은 1.2cm, 문제는 바깥 쪽 두께가 0.7cm 정도로 비대칭 형태였다. 이게 왜 문제냐면..
수직으로 비는 공간 없이 정확하게 맞물려야 하는데 양쪽이 비대칭이다보니 제대로 맞물리지 않는 다는 점이다. 그러다보니 불균형으로 제대로 고정될 수 없었다.
양쪽이 균일한 베란다 샷사 쪽에 시험삼아 해봤더니 이렇게 딱 알맞게 맞물려서 안정감이 있다.
드라이버로 더 강력하게 조이면 매달릴 수 있긴한데 일단은 손으로 조여보고 좀 당겨보았더니 이런식으로 빠져버린다. 그렇다면 액자도 얼마 못가서 떨어질 것 만 같았다. 게다가 몰딩 재질도 나무 느낌이라 손상 갈 것 같았다.
길이 조정 방식은 누른 채로 길이 조절이 가능해서 편리했다.
액자 무게는 하중이 2kg 이하여야하는데 그냥 몸무게에서 액자들고 잰 무게 빼서 측정했다. 1.15kg나오니 적합하니 하나로도 충분할 것 같긴한데.. 영 불안해서 아직 액자를 걸지 못했다. 몰딩이 양쪽 길이가 균등했으면 달았을 법 한데 그게 아니라 좀 아쉽다. 그렇다고 꼭꼬핀으로 하자니 벽지 손상이 생각보다 티가 나는 것 같아서 안될 것 같다.
'이야기 > 각종 후기' 카테고리의 다른 글
피모소프트 클레이로 국립중앙박물관 반가사유상 토우 시리즈 눕눕반가 만들어보기 (1) | 2024.02.12 |
---|---|
티켓 보관을 위한 다이소 손코팅 필름 A6,B5 코팅 후기 및 주의할 점 (1) | 2024.02.11 |
다이슨 무선 청소기 v7 플러피+ 배터리 교체 후기 [배터리 리필 박사] Dyson V7 Fluffy+ (2) | 2024.02.09 |
쿠르츠게작트 굿즈 포스터 3종 구매 후기 [kurzgesagt Poster - To the Moon,Back to Earth,Starry Night] (1) | 2024.02.01 |
ㄱ자 90도 싱크대 수전 핸디형 자바라 수도꼭지 필터 헤드 구매 후기 [워터웰 싱크대 수전 필터 자바라 멀티 헤드] (1) | 2023.11.11 |
exiftool 로 사진 파일 EXIF 정보 다수의 사진 한꺼번에 일괄 업데이트 수정 하기
exiftool을 사용하여 사진 exif 정보가 없는 다수의 사진 파일을 하나씩 수정하고 추가하자니 많은 시간이 걸려서 검색해본 결과 bat 파일로 추가하는 방법을 시도해보았다.
참고한 블로그 링크 글. exiftool 파일 셋팅은 아래 블로그 글을 참고하면 된다. C:\Windows 폴더에 파일만 옮겨두면 끝
https://blog.naver.com/dirail/220040581902
https://blog.naver.com/dirail/220074853011
일단 exiftool 파일을 받아야 하고 bat 파일을 메모장에 생성하면 된다. 참고로 exiftoolGUI 도 설치해둔다면 exif 값을 쉽게 알아볼 수 있다. 어떤 값을 추가해야할지 보고 메모장에 명령어만 추가해주면 된다.
https://nenunena.tistory.com/50
위 배치 자동화 글을 토대로 명령어만 수정해보았다. 대략적인 설명은 사진 파일에 모델명을 갤럭시로 하고 싶다면 1을 입력, 애플로 하고 싶다면 2를 입력하면된다. 그리고 원하는 시간대도 형식에 맞게 입력하면 모델명과 시간이 새로 추가 또는 수정된다. 카메라 초첨 밝기 위치정보 등 나머지 값들은 임의로 집어넣었다. 빨간색으로 된 값들은 모두 위 exiftool GUI 에서 보고 추가한 값들이다. 참고로 현재 *.jpg 파일만 가능한 듯 싶다. png는 안됐음.
:top @echo. @set /p dir="사진 폴더를 이 창 위로 드래그 하고 엔터치세요:" @%dir:~1,2% @cd %dir% @echo. :camera @set /p model="추가할 모델(ex. 갤럭시는 1, 애플은 2: " @set /p date="날짜수정 (ex. 2019:05:01 13:45:32) : " @echo. @if "%model%" == "1" ( exiftool -Make="samsung" -Model="Galaxy S23 Ultra" -ModifyDate="%date%" -GPSLatitudeRef="North" -GPSLatitude="37.511102°" -GPSLongitudeRef="East" -GPSLongitude="126.995283°" -ExposureTime="1/40" -FNumber="2.4" -ISO="400" -ShutterSpeedValue="2" -ApertureValue="2.4" -BrightnessValue="4.24" *.jpg ) else if "%model%" == "2" ( exiftool -Make="Apple" -Model="iPhone 14 Pro" -ModifyDate="%date%" -GPSLatitudeRef="North" -GPSLatitude="37.511102°" -GPSLongitudeRef="East" -GPSLongitude="126.995283°" -ExposureTime="1/40" -FNumber="2.4" -ISO="400" -ShutterSpeedValue="2" -ApertureValue="2.4" -BrightnessValue="4.24" *.jpg ) @echo 작업 완료. :more @set /p more="더 작업하시겠습니까?(y or n) " @if "%more%"=="y" goto top @if "%more%"=="n" goto exit @goto more :exit @echo. 아무키나 누르면 종료됩니다. @pause >nul @exit |
실행 후 사진이 들어있는 폴더를 드래그하여 cmd 창에 두면 자동으로 경로가 뜨고 엔터를 친다. 그 다음엔 원하는 모델에 따라 1 또는 2 를 치고 그 다음에는 원하는 시간을 형식에 맞게 입력하면 된다.
그럼 위와 같이 다수의 파일이 업데이트 되었다는 메시지와 함께 작업 완료. 참고로 완료 후 원본파일은 자동으로 백업이 된다. 끝에 jpg_original 확장자로 변경되면서 백업되는데 확장자를 다시 jpg 바꿔주면 원본 사진을 볼 수 있다.
'지식메모 > 꿀팁' 카테고리의 다른 글
윈도우11 메모장 열었을 때 다수의 탭이 열리는 경우 해결책 (0) | 2024.02.11 |
---|---|
노트북 듀얼 모니터 연결시 모니터 해상도가 FHD (1920 x 1080p)이상 설정되지 않을 때 해결 방법 (0) | 2023.10.30 |
랜포트 없는 노트북 유선 랜 인터넷 연결하기 (HP ZBook Studio G10 모델 기준) (0) | 2023.10.03 |
HP 노트북 Fn 펑션키 반대로 셋팅하기 [HP ZBook Studio 16인치 G10 모델] (3) | 2023.07.31 |
안드로이드 폰에서 pdf 파일 수정하는 방법(구글 드라이브,삼성 노트, Microsoft 365 앱) (0) | 2023.07.04 |
사진 위치정보 EXIF 변경하기
위 주소로 접속하면 다음과 같은 화면이 나온다.
참고로 JPG 파일만 가능
좌측에서 마우스로 직접 위치를 지정하거나 검색해서 장소를 찾을 수 있다. 그럼 아래에 좌표가 자동으로 찍힌다.
위치정보 변경할 사진을 드래그 하여 업로드하면 아래와 같이 사진 위치정보가 노출된다.
(위치정보가 없다면 공란으로 나옴)
Write EXIF Tags 를 클릭하면 지도에 찍힌 새 좌표가 사진에 입력된다.
그리고 다운로드하면 위치정보 변경된 사진을 내려받을 수 있다.
'지식메모 > 꿀팁' 카테고리의 다른 글
국내 통화료로 무료 국제전화 걸기 - OTO 무료 국제전화 앱 (0) | 2018.09.06 |
---|---|
Xcode 9.4.1 한줄 삭제 단축키 만들기 (0) | 2018.08.28 |
스타크래프트 리마스터 방에 들어가지지 않을 때 블리자드 해결법 (0) | 2017.08.23 |
엑셀 두 셀에 있는 단어 합치기 및 줄바꿈으로 합치기 (0) | 2017.06.19 |
스타크래프트 1.18.2 패치 이후 배틀넷 접속시 꺼지는 문제 해결 방법 (0) | 2017.04.29 |
로마 천사의 다리 건널 때 주의사항
저렇게 코스프레 분장한 사람이 친한 척하고 막 사진찍어준다 그러면 무조건 피하세요
사진 2장 찍어주고 20유로 달랍니다.
너무 비싸서 10유로 쇼부봤는데 거절하네요
처음 여행이라 아차 싶었는데 이미 찍고나서..
사진도 역광..
폰 사진 지우고 됐다 난 못준다 할 걸 뒤늦게 생각이 드는데..
20유로면 거의 3만원 돈입니다..
걍 처음 해와 여행이라 액땜했다 치고 줬어요... 소매치기보단 나으니..
액자로라도 만들어야겠네요
천사의 다리 지나 갈때 이분이 말 걸어도 쌩까고 그냥 가세요
여행 많이 다녀 보신 분들은 촉이 올겁니다.
20유로면 맛있는 걸 먹는게 낫지 사진2장으로 날려보내긴 아깝죠..
내 20유로..
혹시 이분 한국에서 보시면 제보해주세요
제가 사또복 입고 가서 같이 사진찍고 3만원 받아낼겁니다...
'국내&해외여행 > Tip' 카테고리의 다른 글
영국 기차역 티켓머신에서 Virgin Train 예약 내역 티켓 발권 방법 (0) | 2017.10.11 |
---|---|
이탈리아 피사의 사탑에서 라스페치아역 가는 법과 짧은 티켓 펀칭 방법 (0) | 2017.10.10 |
9/26 피렌체 1일차 더 몰 쇼핑타운과 전용버스 타는 곳 (0) | 2017.10.10 |
9/24 로마 로마패스 구입처 - 테르미니역 안내소 (0) | 2017.10.09 |
라이언에어 무료 체크인 방법과 수하물 규정 - 트레비소 공항 (1) | 2017.10.06 |
야 사진 찍잖아
저기봐
'동물농장 > 사진' 카테고리의 다른 글
위장중이냥 (0) | 2015.06.01 |
---|---|
제발 날 데려가주세요 (0) | 2015.05.31 |
사장님 개세요~? (0) | 2015.05.19 |
아이 간지러 (0) | 2015.05.07 |
배려심 쩌는 강아지들 (0) | 2015.04.30 |
안드로이드 킷캣에서 사진 자르기시 팅기는 현상 임시 해결..?
그냥 간단하게 사진 자르기 해서 이미지 넣으려고 했는데
킷캣에서 부터 팅기는 현상이 발생했다.
팅기는 영상.
정말 뜬금없다. 킷캣 전부터는 쭉 잘 되던거였는데...
웃긴 건 이상하게 특정사진만 자르면 팅긴다. 원본사진은 100kb밖에 안되는 사진인데도 말이다.
도대체 원인 뭔지 한참을 찾아헤맸다.
어찌어찌 해결을 됐는데 완벽한 해결책은 아니다..
킷캣문제인가 해서 찾아보기도 하고..
참고한 링크들이다.
https://plus.google.com/112692779577336772166/posts/9MbmSsUcd1e
http://www.androidside.com/plugin/mobile/board.php?bo_table=B49&wr_id=81704
안드로이드 사이드 위 글을 보고 해결을 했다.
사진 크롭 코드를 보면 이런 부분이 있다.
기존 코드는 이렇게 되어있었는데
intent.putExtra("outputX", 120);
intent.putExtra("outputY", 130);
안드로이드사이드 글에서 이게 문제라는 댓글을 보았다.
그래서 저 숫자를
intent.putExtra("outputX", 100);
intent.putExtra("outputY", 100);
100로 작게 바꿔주었다.
그랬더니?? 신기하게 팅기지가 않는다. 최소한 내 폰에서는...
그래서 임시방편으로나마 해결을 했는데 찜찜하다.
다른 폰에서는 자르기는 되는데 자른 이미지가 깨진건지 안나온다;;;
찾아보면서 얻은 결론은
메모리 부족으로 발생하는 것이다.
바인더 Intent에 1MB 이상의 데이터를 넘기게되면 발생할 수 있다.
보통 제공되는 크롭을 사용하게 되면 발생하므로 이미지 크롭의 경우 직접 구현해서 사용하는게 낫다는 의견
하지만 직접 구현할 능력이..;; 그리고 찾아본 예제들은 거의 다 기본 제공 크롭소스이다..
마지막으로 위 영상의 예제 코드를 올린다.
아마도 다 이 코드를 쓸 것이다. 퍼질대로 퍼진 대중적인 코드(xml은 제외)
package com.example.camera import java.io.File; import com.example.camera.R; import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.content.Intent; import android.graphics.Bitmap; import android.net.Uri; import android.os.Bundle; import android.os.Environment; import android.provider.MediaStore; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.LinearLayout; public class MainActivity extends Activity implements OnClickListener { private ImageView mPhotoImageView;// 이미지 받기 private ImageView foot; private Uri mImageCaptureUri; private static final int PICK_FROM_CAMERA = 0; private static final int PICK_FROM_ALBUM = 1; private static final int CROP_FROM_CAMERA = 2; LinearLayout bar, mother = null; FrameLayout container = null; Bitmap bm = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button mButton = (Button) findViewById(R.id.load); mPhotoImageView = (ImageView) findViewById(R.id.profile); mButton.setOnClickListener(this); } private void doTakePhotoAction() { Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); // 임시로 사용할 파일의 경로를 생성 String url = "tmp.jpg"; mImageCaptureUri = Uri.fromFile(new File(Environment .getExternalStorageDirectory(), url)); intent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, mImageCaptureUri); // 특정기기에서 사진을 저장못하는 문제가 있어 다음을 주석처리 합니다. // intent.putExtra("return-data", true); startActivityForResult(intent, PICK_FROM_CAMERA); } private void doTakeAlbumAction() { // 앨범 호출 Intent intent = new Intent(Intent.ACTION_PICK); intent.setType(android.provider.MediaStore.Images.Media.CONTENT_TYPE); startActivityForResult(intent, PICK_FROM_ALBUM); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode != RESULT_OK) { return; } switch (requestCode) { case CROP_FROM_CAMERA: { // 크롭이 된 이후의 이미지를 넘겨 받습니다. // 이미지뷰에 이미지를 보여준다거나 부가적인 작업 이후에 // 임시 파일을 삭제합니다. final Bundle extras = data.getExtras(); if (extras != null) { Bitmap photo = extras.getParcelable("data"); mPhotoImageView.setImageBitmap(photo); } // 임시 파일 삭제 File f = new File(mImageCaptureUri.getPath()); if (f.exists()) { f.delete(); } break; } case PICK_FROM_ALBUM: { // 이후의 처리가 카메라와 같으므로 일단 break없이 진행합니다. // 실제 코드에서는 좀더 합리적인 방법을 선택하시기 바랍니다. mImageCaptureUri = data.getData(); } case PICK_FROM_CAMERA: { // 이미지를 가져온 이후의 리사이즈할 이미지 크기를 결정합니다. // 이후에 이미지 크롭 어플리케이션을 호출하게 됩니다. Intent intent = new Intent("com.android.camera.action.CROP"); intent.setDataAndType(mImageCaptureUri, "image/*"); intent.putExtra("outputX", 120); intent.putExtra("outputY", 130); // intent.putExtra("aspectX", 1); // intent.putExtra("aspectY", 1); intent.putExtra("scale", true); intent.putExtra("return-data", true); startActivityForResult(intent, CROP_FROM_CAMERA); break; } } } @Override public void onClick(View v) { if (v.getId() == R.id.load) { DialogInterface.OnClickListener cameraListener = new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { doTakePhotoAction(); } }; DialogInterface.OnClickListener albumListener = new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { doTakeAlbumAction(); } }; DialogInterface.OnClickListener cancelListener = new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }; new AlertDialog.Builder(this).setTitle("업로드할 이미지 선택") .setPositiveButton("사진촬영", cameraListener) .setNeutralButton("앨범선택", albumListener) .setNegativeButton("취소", cancelListener).show(); } } }
팅길 때 찍힌 로그.
12-14 20:59:51.831: E/JavaBinder(1242): !!! FAILED BINDER TRANSACTION !!! 12-14 20:59:51.831: I/ActivityManager(1242): Restarting because process died: ActivityRecord{42d64570 u0 com.example.camera/.MainActivity t1511} 12-14 20:59:51.831: D/AlwaysOnTopManagerService(1242): setRearTouchLongPress(): flag = false, mIsLongPress = false 12-14 20:59:51.851: W/WindowManager(1242): view not successfully added to wm, removing view 12-14 20:59:51.861: E/JavaBinder(1242): !!! FAILED BINDER TRANSACTION !!! 12-14 20:59:51.861: W/ActivityManager(1242): Exception when starting activity com.example.camera/.MainActivity 12-14 20:59:51.861: W/ActivityManager(1242): android.os.TransactionTooLargeException 12-14 20:59:51.861: W/ActivityManager(1242): at android.os.BinderProxy.transact(Native Method) 12-14 20:59:51.861: W/ActivityManager(1242): at android.app.ApplicationThreadProxy.scheduleLaunchActivity(ApplicationThreadNative.java:761) 12-14 20:59:51.861: W/ActivityManager(1242): at com.android.server.am.ActivityStackSupervisor.realStartActivityLocked(ActivityStackSupervisor.java:1072) 12-14 20:59:51.861: W/ActivityManager(1242): at com.android.server.am.ActivityStackSupervisor.startSpecificActivityLocked(ActivityStackSupervisor.java:1168) 12-14 20:59:51.861: W/ActivityManager(1242): at com.android.server.am.ActivityStack.resumeTopActivityLockedInner(ActivityStack.java:2327) 12-14 20:59:51.861: W/ActivityManager(1242): at com.android.server.am.ActivityStack.resumeTopActivityLocked(ActivityStack.java:1482) 12-14 20:59:51.861: W/ActivityManager(1242): at com.android.server.am.ActivityStackSupervisor.resumeTopActivitiesLocked(ActivityStackSupervisor.java:2196) 12-14 20:59:51.861: W/ActivityManager(1242): at com.android.server.am.ActivityStack.completePauseLocked(ActivityStack.java:1077) 12-14 20:59:51.861: W/ActivityManager(1242): at com.android.server.am.ActivityStack.activityPausedLocked(ActivityStack.java:964) 12-14 20:59:51.861: W/ActivityManager(1242): at com.android.server.am.ActivityManagerService.activityPaused(ActivityManagerService.java:5364) 12-14 20:59:51.861: W/ActivityManager(1242): at android.app.ActivityManagerNative.onTransact(ActivityManagerNative.java:427) 12-14 20:59:51.861: W/ActivityManager(1242): at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:2159) 12-14 20:59:51.861: W/ActivityManager(1242): at android.os.Binder.execTransact(Binder.java:404) 12-14 20:59:51.861: W/ActivityManager(1242): at dalvik.system.NativeStart.run(Native Method) 12-14 20:59:51.872: D/WindowManager(1242): win:Window{435b3a88 u0 com.example.camera/com.example.camera.MainActivity}mOemFlagWin:null,mSaveOemFlags:0,mCurrentFocus:Window{449c9898 u0 com.android.gallery3d/com.android.gallery3d.filtershow.crop.CropActivity} 12-14 20:59:51.882: I/ActivityManager(1242): Start proc com.example.camera for activity com.example.camera/.MainActivity: pid=6109 uid=10007 gids={50007} 12-14 20:59:51.882: D/ActivityManager(1242): checkHideDockBarApplication.result = NOK 12-14 20:59:51.892: D/dalvikvm(6109): Late-enabling CheckJNI 12-14 20:59:51.922: D/dalvikvm(6109): Debugger has detached; object registry had 1 entries 12-14 20:59:51.922: E/JavaBinder(1242): !!! FAILED BINDER TRANSACTION !!! |
위 로그를 보고 어느 분이 달아주신 댓글..
TransactionTooLargeException 발생한거네요..
바인더 Intent에 1MB 이상의 데이터를 넘기게되면 발생할 수 있습니다.
보통 제공되는 크롭을 사용하게 되면 발생하구요.. 이미지 크롭의 경우 직접 구현해서 사용하는게 낫습니다.
나중에 좀 더 완벽한 해결책을 적용할 수 있으면 좋겠다.
'지식메모 > 안드로이드 Android' 카테고리의 다른 글
안드로이드 Android library projects cannot be launched 에러 발생 해결책 (0) | 2015.01.31 |
---|---|
안드로이드 Unable to start activity ComponentInfo 문제해결 (0) | 2015.01.31 |
안드로이드 R.java 파일 없어졌을 때 해결법 (2) | 2014.09.05 |
안드로이드 graphical Layout 안 뜨는 문제해결 (7) | 2014.08.10 |
안드로이드 conversion to Dalvik format failed with error 1 문제해결.. (2) | 2014.07.27 |
나도 좀 같이 찍자고
자 여기 보세요 치즈~
씨익
'동물농장 > 영상' 카테고리의 다른 글
완전 귀여운 말라뮤트 (0) | 2013.09.28 |
---|---|
졸리면 자 (0) | 2013.09.28 |
자 돈 넣고 돈 먹기~ (0) | 2013.09.28 |
너 방금 뭐라고 했냐? (0) | 2013.09.27 |
힙합고양이 (0) | 2013.09.27 |