
크롭기능은 어느정도 만들었습니다. 크롭기능에 비율을 넣으려면 어떻게 해야 할까요 ?
도움이 될지 모르겠어요 그래도 지금 사용한 소스 일부 첨부해 보아요
--------------------------------------------------------------------------------------------------
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);*/
}