마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

이미지 crop크롭 기능에 비율을 좀 넣고 싶어요

0 추천

 

크롭기능은 어느정도 만들었습니다. 크롭기능에 비율을 넣으려면 어떻게 해야 할까요 ?

도움이 될지 모르겠어요 그래도 지금 사용한 소스 일부 첨부해 보아요 

--------------------------------------------------------------------------------------------------

public class CropImageProcessing extends ImageView 
{
	private static final String TAG = "Crop_Image";
	//============================================//
	//mXLeft:x축 왼쪽좌표(기준)
	//mXRight:x축 오른쪽 좌표
	//mYTop:y축 상단좌표(기준)
	//mYBottom:y축 하단좌표
	//mDep:화살표 아이콘 Bitmap 변수.
	//============================================//
	float mXLeft, mXRight , mYTop, mYBottom;
	static int mDep = 0;

	CropImageActivity mCropActivity;

	Bitmap mBitmap;
	float mWidth;
	float mHeight;
	Paint mPaint;

	Bitmap mLSizeBmp;
	Bitmap mRSizeBmp;

	private String mOutputFilePath=Util.externalStorageRoot;

	@SuppressWarnings("deprecation")
	public CropImageProcessing(Context context, AttributeSet attrs)
	{
		super(context, attrs);
		
		
		Display display = ((WindowManager) context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
		mWidth = display.getWidth();
		mHeight = display.getHeight();

		//Crop영역의 초기 좌표값 지정. 
		mXLeft = mWidth / 5;
		mXRight = mWidth * 4/5;
		mYTop = mHeight / 5;
		mYBottom = mHeight * 4/5;

		Log.e(TAG, mOutputFilePath);
		mCropActivity = (CropImageActivity)context;

		BitmapFactory.Options resizeOpts = new Options();
		resizeOpts.inSampleSize = 2;
		try
		{
			mBitmap = BitmapFactory.decodeStream(new FileInputStream(mOutputFilePath), null, resizeOpts);
		}
		catch(Exception e)
		{e.printStackTrace();}

		mBitmap = Bitmap.createScaledBitmap(mBitmap, (int)mWidth, (int)mHeight, false);

		Log.e(TAG, ""+mBitmap.getHeight()*mBitmap.getWidth()); 
		mLSizeBmp = BitmapFactory.decodeResource(getContext().getResources(), R.drawable.lefttop);
		mRSizeBmp = BitmapFactory.decodeResource(getContext().getResources(), R.drawable.righttop);
		
		//==========================================================================================================//
			//mDep = AppDisplay.GetPixel(38);
			//AppDisplay를 사용하여 아이콘 픽셀값을 dp로 변경하여도 되나
			//87번 줄에서 mDep = mHSizeBmp.getWidth(); 비트맵값을 변수로 받고 이를 이용하여 onDraw에서 아이콘의 좌표를 정한다.
		//==========================================================================================================//
		
		mDep = mLSizeBmp.getWidth()/2;

		mPaint = new Paint();
		mPaint.setColor(Color.MAGENTA);
		mPaint.setStrokeWidth(3);
	}

	public void onDraw(Canvas canvas)
	{
		
		//=========================================//
		//onDraw를 이용하여 Crop영역을 보여준다.
		//=========================================//
		
		canvas.drawBitmap(mBitmap, 0, 0, null);
		
		//상단 가로줄
		canvas.drawLine(mXLeft, mYTop, mXRight, mYTop, mPaint);
		
		//오른쪽 세로줄
		canvas.drawLine(mXRight, mYTop, mXRight, mYBottom, mPaint);
		
		//왼쪽 세로줄
		canvas.drawLine(mXLeft, mYTop, mXLeft, mYBottom, mPaint);
		
		//하단 가로줄
		canvas.drawLine(mXLeft, mYBottom, mXRight, mYBottom, mPaint);

		//왼쪽상단 아이콘
		canvas.drawBitmap(mLSizeBmp, mXLeft - (mDep ), mYTop- (mDep ), null);
		
		//오른쪽상단 아이콘
		canvas.drawBitmap(mRSizeBmp, mXRight - (mDep ), mYTop- (mDep ), null);
		
		//왼쪽하단 아이콘
		canvas.drawBitmap(mRSizeBmp, mXLeft - (mDep ), mYBottom- (mDep), null);
		
		//오른쪽 하단 아이콘
		canvas.drawBitmap(mLSizeBmp, mXRight - (mDep ), mYBottom- (mDep ), null);


		// 기존 소스
		/*canvas.drawBitmap(mHSizeBmp, (mXRight+mXLeft)/2 - (mDep / 2), mYTop - (mDep / 2), null);
		canvas.drawBitmap(mHSizeBmp, (mXRight+mXLeft)/2 - (mDep / 2), mYBottom-(mDep / 2), null);

		canvas.drawBitmap(mWSizeBmp, mXLeft - (mDep / 2), (mYBottom+mYTop)/2 - (mDep / 2), null);
		canvas.drawBitmap(mWSizeBmp, mXRight - (mDep / 2), (mYBottom+mYTop)/2 - (mDep / 2), null);*/
	}

 

 

익명사용자 님이 2014년 3월 17일 질문

1개의 답변

0 추천
크롭기능중에 타원 기능있으시면 공유좀 부탁드립니다 ㅠㅠ
너무어렵다ㅠ (650 포인트) 님이 2015년 2월 3일 답변
...