2
두 비트 맵을 결합하여 이미지 뷰로 설정하고 단추를 클릭 할 때 해당 비트 맵을 저장하려고합니다. 그러나 비트 맵을 결합하면 비트 맵이 두 번째 비트 맵을 더 크게 표시합니다두 비트 맵을 결합하여 하나의 이미지로 저장
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getBitmap(image1);
Bitmap drawingBitmap = Bitmap.createBitmap(parts.getWidth(),
parts.getHeight(),Bitmap.Config.ARGB_8888);
canvas = new Canvas(drawingBitmap);
canvas.drawBitmap(parts,0,0,null);
canvas.drawBitmap(touch,0,0,null);
bit=drawingBitmap;
public void getBitmap(View v) {
Bitmap bitmap= Bitmap.createBitmap(v.getWidth(),v.getHeight(), Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(bitmap);
v.draw(c);
touch=bitmap;
}
Button btn = (Button) findViewById(R.id.button);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
SaveImage save = new SaveImage();
save.Save(getApplicationContext(),bit);
}
});
}
여기 부품 보류 카메라 사진에 대한 비트 맵과 image1에 동적으로 생성되는 이미지 뷰입니다 : 그것은보다 실제 size.here 내 코드입니다.
SaveImage.java
package com.example.tattoodesign;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.media.MediaScannerConnection;
import android.net.Uri;
import android.os.Environment;
import android.widget.Toast;
public class SaveImage {
private Context TheThis;
private String NameOfFolder = "/PaintImage";
public String NameOfFile = null;
//private ArrayList<Bitmap> images = null;
public void Save(Context context,Bitmap ImageToSave){
TheThis = context;
String file_path = Environment.getExternalStorageDirectory().getAbsolutePath()+ NameOfFolder;
String CurrentDateAndTime= getCurrentDateAndTime();
File dir = new File(file_path);
NameOfFile="PaintImage"+CurrentDateAndTime+ ".jpg";
if(!dir.exists()){
dir.mkdirs();
}
File file = new File(dir,NameOfFile);
if (file.exists()) file.delete();
try {
FileOutputStream fOut = new FileOutputStream(file);
ImageToSave.compress(Bitmap.CompressFormat.JPEG, 85, fOut);
fOut.flush();
fOut.close();
MakeSureFileWasCreatedThenMakeAvabile(file);
}
catch (FileNotFoundException e) {
UnableToSave();}
catch (IOException e){
UnableToSave();
}
}
private void MakeSureFileWasCreatedThenMakeAvabile(File file) {
MediaScannerConnection.scanFile(TheThis,
new String[] { file.toString() }, null,
new MediaScannerConnection.OnScanCompletedListener() {
public void onScanCompleted(String path, Uri uri) {
}
});
}
private String getCurrentDateAndTime() {
Calendar c = Calendar.getInstance();
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss");
String formattedDate = df.format(c.getTime());
return formattedDate;
}
private void UnableToSave() {
Toast.makeText(TheThis, "Picture cannot to gallery", Toast.LENGTH_SHORT)
.show();
}
}
는이 문제를 어떻게 해결할 수 있습니까?
어떤 도움을 주셔서 감사합니다.
감사합니다.
이 경우에 해당 될 수 있습니다.이 답변을 추가하면 같은 이미지를 결합 해 보거나 단지 두 번째 이미지가 첫 번째 이미지보다 크지 않은지 확인할 수 있습니다. – Dhina
같은 이미지를 결합하려고하면 다른 이미지를 결합하려고 할 때 두 번째 이미지가 첫 번째 이미지보다 큽니다. –