"টেক্সচারে আপলোড করার জন্য বিটম্যাপটি খুব বড়"


154

আমি একটি চিত্র ভিউতে একটি বিটম্যাপ লোড করছি এবং এই ত্রুটিটি দেখছি। আমি এই সীমাটি সংগ্রহ করি ওপেনজিএল হার্ডওয়্যার টেক্সচারের জন্য একটি আকারের সীমা সম্পর্কিত (2048x2048)। আমার যে চিত্রটি লোড করতে হবে তা হ'ল প্রায় 4,000 পিক্সেল উচ্চতার একটি চিমটি-জুম চিত্র।

আমি ম্যানিফেস্টে হার্ডওয়্যার ত্বরণ বন্ধ করার চেষ্টা করেছি, তবে আনন্দ নেই।

    <application
        android:hardwareAccelerated="false"
        ....
        >

2048 পিক্সেলের চেয়ে বড় কোনও চিত্রকে কোনও ভিউতে লোড করা সম্ভব?


1
এখানে দেখার জন্য যে কেউ, আপনার চিত্রটি যদি স্ক্রোলযোগ্য হতে চায় তবে আপনার চিত্রটিকে একটি স্ক্রোল ভিউতে রাখতে ভুলবেন না। ত্রুটি থেকে মুক্তি পাবেন। আমার সমস্যাটি বোঝার আগে আমি কিছুটা সময় নষ্ট করেছিলাম।
জেসন রিজ

যে কেউ এখনও চিত্রের গুণগতমান বজায় রেখে বড় আকারের চিত্র প্রদর্শন করতে চাইছেন, নীচে @stoefln উত্তরে পাঠাগারটি দেখুন। আমি এটি ব্যবহার করেছি এবং চেষ্টা করার মতো। অবশ্যই inSampleSizeপদ্ধতির চেয়ে ভাল ।
মহেন্দ্র লিয়া

1
@ জো ব্লো বর্তমান উত্তর আপনার ক্ষেত্রে কার্যকর হয়নি? যদি না হয় তবে দয়া করে এই প্রশ্নের প্রসঙ্গে আপনি যে সমস্যার মুখোমুখি হয়েছিলেন সে সম্পর্কে বিস্তারিত বলবেন?
প্রবীণ ডিভরানিয়া

1
আরে @ ভিসি ওয়ান - আমার মানুষটির সম্পর্কে কাজ করা এক বিস্ময়কর বিষয়। আমার "পুরষ্কার বিদ্যমান উত্তর" ক্লিক করা উচিত ছিল। কেউ এই ক্লাসে এই পপআপের "সেরা" বোতামটি টিপছে বলে বিরক্ত করে না, কারণ এটি নির্বোধ :) যখন আমি অনুগ্রহ করে ক্লিক করি তখন এটি এখনই সমাধান হয়ে গেছে। চিয়ার্স !!
ফ্যাটি 18

1
আমি সর্বদা উদ্বিগ্ন অর্থ প্রদান করার চেষ্টা করি (পয়েন্ট সংগ্রহ করা আমার পছন্দ নয়)। আমার ধারণা, আপনি যদি আমার প্রোফাইলে ক্লিক করেন, তবে অনুগ্রহপূর্বক, @ ভিসি। একবার আপনি বেশ কয়েক বছর ধরে সত্যই দুর্দান্ত ক্যুএ দেখতে পাবেন !!!!!!!!!!!!!!!
ফ্যাটি 21

উত্তর:


48

সমস্ত রেন্ডারিং ওপেনজিএল ভিত্তিক, সুতরাং আপনি এই সীমাটি অতিক্রম করতে পারবেন না ( GL_MAX_TEXTURE_SIZEডিভাইসের উপর নির্ভর করে তবে সর্বনিম্ন 2048x2048, সুতরাং 2048x2048 এর চেয়ে কম যে কোনও চিত্র ফিট হবে)।

এই জাতীয় বড় চিত্রগুলির সাথে, আপনি যদি জুম বাড়িয়ে নিতে চান এবং একটি মোবাইলে উদাহরণস্বরূপ গুগল ম্যাপে আপনি যা দেখতে চান তার অনুরূপ একটি সিস্টেম সেটআপ করা উচিত। চিত্রটি কয়েকটি টুকরোতে বিভক্ত হয়ে গেছে এবং বেশ কয়েকটি সংজ্ঞা রয়েছে।

অথবা আপনি চিত্রটি প্রদর্শনের আগে চিত্রটি কমিয়ে আনতে পারেন ( এই প্রশ্নের উপরের ব্যবহারকারীরা 1352407 এর উত্তর দেখুন )।

এবং আপনি যে ফোল্ডারে ছবিটি রেখেছেন সে সম্পর্কেও সাবধান থাকুন, অ্যান্ড্রয়েড স্বয়ংক্রিয়ভাবে চিত্রগুলি স্কেল করতে পারে। কটাক্ষপাত আছে Pilot_51 এর উত্তর এই প্রশ্ন উপর নিচে।


23
যদি এটি হয় তবে গ্যালারী অ্যাপ্লিকেশন কীভাবে ক্যামেরার সাথে তোলা চিত্রগুলি প্রদর্শন এবং ম্যানিপুলেশনকে অনুমতি দেয়? 2048x2048 কেবল একটি 4 এমপি চিত্র, এবং অনেক অ্যান্ড্রয়েড ফোনগুলি এর চেয়ে অনেক বেশি বড় ফটো নেয় এবং গ্যালারী অ্যাপটিতে কোনও সমস্যা নেই বলে মনে হয়।
অলি সি

3
কারণ GL_MAX_TEXTURE_SIZE ডিভাইসের উপর নির্ভর করে।
jptsetung

24
এটি সত্যিই কোনও অর্থবোধ করে না। আমি এখন একই সমস্যার মুখোমুখি হয়েছি - 1286x835 পিক্সেলের একটি চিত্র সহ। এবং: কেবলমাত্র একটি গ্যালাক্সি নেক্সাসে আমি এই ত্রুটি বার্তাটি পাই এবং কোনও চিত্র নেই! এটি কেবল হাস্যকর বলে মনে হচ্ছে যে শীর্ষে থাকা একটি স্মার্টফোন এত ছোট চিত্রটি প্রদর্শন করতে পারে না! আমার এইচটিসি হিরো এটি প্রদর্শন করতে সক্ষম! আমি কি করতে পারি?
জোর্ডিড


3
@ অলিসি আমি গ্যালারী অ্যাপ্লিকেশনগুলি কীভাবে এটি ব্যবহার করে তা জানতে চাই। সুতরাং যদি কারও জানা থাকে বা বড় চিত্র দেখানোর জন্য উদাহরণ রয়েছে তবে তা দুর্দান্ত be
ইনোভা

408

এটি প্রশ্নের সরাসরি উত্তর নয় (চিত্রগুলি লোড করা হচ্ছে> 2048), তবে যে কেউ ত্রুটিটি অনুভব করছেন তার একটি সম্ভাব্য সমাধান।

আমার ক্ষেত্রে, চিত্রটি উভয় মাত্রায় 2048 এর চেয়ে ছোট ছিল (সঠিক হতে 1280x727) এবং সমস্যাটি একটি গ্যালাক্সি নেক্সাসে বিশেষভাবে অভিজ্ঞ হয়েছিল। চিত্রটি drawableফোল্ডারে ছিল এবং যোগ্য ফোল্ডারের কোনওটিই ছিল না। অ্যান্ড্রয়েড একটি ঘনত্বের যোগ্যতা ছাড়াই অঙ্কনযোগ্যগুলি এমডিপিআই এবং অন্যান্য ঘনত্বের জন্য এগুলি নীচে বা নীচে আঁকবে, এক্ষেত্রে এক্সএইচডিপিআইয়ের জন্য 2x পরিমাণে বাড়িয়ে তোলা হয়েছে। drawable-nodpiস্কেলিং প্রতিরোধের জন্য অপরাধীর চিত্রটি সরানো সমস্যার সমাধান করে।


3
ড্রয়েবলগুলি লোড করার চেষ্টা করার সময় আমার স্মৃতি সমস্যা ছিল issues এটি কেন ঘটছে তা বোঝার চেষ্টা করে 2 ঘন্টা ব্যয় করলেন। পরোক্ষ উত্তরের জন্য ধন্যবাদ।
ট্রুকোক

16
এটি সঠিক উত্তর এবং এটি হিসাবে চিহ্নিত করা উচিত।
wblaschko

3
প্রায় সাড়ে তিন মাস এখন আমি অ্যান্ড্রয়েডে প্রায় পুরো সময়ের প্রোগ্রামিং করেছি এবং আমি এখনই এটি উপলব্ধি করেছি। drawableমূলত একটি লুকানো drawable-mdpiফোল্ডার তৈরি করতে বোবা মনে হচ্ছে । এটি আমার কাস্টম মানচিত্রের চিহ্নিতকারীগুলিকে কেন ভয়াবহ দেখাচ্ছে (এটি উত্সাহিত করা হয়েছিল, তারপরে ডাউনস্কেল করা হয়েছিল) এটিও ব্যাখ্যা করেছে।
theblang

10
হ্যাঁ কী! আমি মনে করি 99% অ্যান্ড্রয়েড প্রোগ্রামাররা "অঙ্কনযোগ্য" এর অর্থ "এটি স্কেল করবেন না" বলে মনে করে।
ম্যাট লোগান

3
এটি আমি এখন পর্যন্ত যে কোনও জায়গায় দেখেছি সবচেয়ে সহায়ক উত্তর। আমি শুধু বলতে পারি যে আমি একটি অনুগ্রহ পাঠাচ্ছি! ধন্যবাদ।
ফ্যাটি

105

আমি এইভাবে চিত্রটি ছোট করে রেখেছি:

ImageView iv  = (ImageView)waypointListView.findViewById(R.id.waypoint_picker_photo);
Bitmap d = new BitmapDrawable(ctx.getResources() , w.photo.getAbsolutePath()).getBitmap();
int nh = (int) ( d.getHeight() * (512.0 / d.getWidth()) );
Bitmap scaled = Bitmap.createScaledBitmap(d, 512, nh, true);
iv.setImageBitmap(scaled);

2
ধন্যবাদ, একটি খুব বড় বিটম্যাপ দেখাতে সক্ষম হতে আমার পক্ষে ক্রিয়েসক্ল্যাডবিটম্যাপ সহায়ক ছিল
বয়

আমার সমস্যা সমাধান করেছেন .. ধন্যবাদ। আসলে আমি ক্যামেরাটি থেকে ছবিটি নিচ্ছিলাম এবং স্যামসাং গ্যালাক্সি এস 4-এ ইমেজভিউতে 4.4.2 সহ প্রদর্শন করছিলাম
মিতেশ শাহ

দুঃখিত, তবে আমি "
ডাব্লু

1
দুঃখিত, এর ctxঅর্থ কী?
আমির সাবিত

1
@ আমিরস্যাবিথ দেখে মনে হচ্ছে সিটিএক্স একটি প্রসঙ্গ বস্তু (উদাহরণস্বরূপ আপনার চলমান কার্যকলাপ)
ম্যাট

34

এই সমস্ত ডাউনস্যাম্পলিং কোডটি ম্যানুয়ালি লিখতে / ডিবাগ করার জন্য কয়েক ঘন্টা সময় ব্যয় করার পরিবর্তে, কেন ব্যবহার Picassoকরবেন না ? এটি bitmapsসমস্ত ধরণের এবং / বা আকারগুলির সাথে ডিল করার জন্য তৈরি হয়েছিল ।

আমি আমার "বিটম্যাপটি অনেক বড় ...." সমস্যাটি সরাতে কোডের এই একক লাইনটি ব্যবহার করেছি :

Picasso.load(resourceId).fit().centerCrop().into(imageView);

পুনরায় আকার () না কল করে সেন্টার ক্রপ () ব্যবহার করার ফলে একটি অবৈধ স্টেটএক্সেপশন হবে। যখন কেন্দ্রের ফসল ব্যবহার করা হয় তখন লাইব্রেরি পুনরায় আকারে কল করতে বাধ্য করে।
জসোল্ট বোল্ডিজসার

এটি নিখুঁতভাবে বোঝায়, কারণ ক্রপিং থেকে বোঝা যায় যে আপনি চিত্রটির আকার পরিবর্তন করছেন।
ফিলিও 99

2
দ্রুত, সহজ এবং সহজ সমাধান। এটি সেরা কিনা তা নিশ্চিত নয় তবে আমি যা চেয়েছিলাম তা পেয়েছি। আপনাকে অনেক ধন্যবাদ
নবীন

বড় আকারের চিত্রগুলির জন্য পিকাসোর সাথে লক্ষ্য ব্যবহার করার সময় এখনও একই ত্রুটি পাওয়া যাচ্ছে :(
নরেন্দ্র সিংহ

2.5.3-SNAPSHOT সংস্করণটি ব্যবহার করার চেষ্টা করুন, মনে হচ্ছে এটি এখন বড় ইমেজগুলির সাথে সঠিকভাবে কাজ করছে
অ্যান্টন মালমিগিন

20

( AndroidManifest.xml) এতে নিম্নলিখিত 2 টি বৈশিষ্ট্য যুক্ত করে :

android:largeHeap="true"
android:hardwareAccelerated="false"

এটি আমার সমস্যাটি স্যামসাং ডিভাইসে স্থির করেছে। ধন্যবাদ
হিতেশ বিশট

16

drawable-nodpiফোল্ডার থেকে drawableফোল্ডারে ইমেজ ফাইলটি পরিবর্তন করা আমার পক্ষে কাজ করেছিল।


এটি অ্যান্ড্রয়েডকে ডিভাইসের মাত্রা এবং স্ক্রিনের ঘনত্বের উপর ভিত্তি করে চিত্রটিকে স্বয়ংক্রিয়-স্কেল করার চেষ্টা থেকে বিরত করবে; এই সমাধান কাজ করে কেন। অ্যান্ড্রয়েড drawableফোল্ডারে যে কোনও কিছুই স্বয়ংক্রিয়ভাবে স্কেল করার চেষ্টা করবে ।
ক্রিস সাইরেফাইস

10

আমি পিকাসো ব্যবহার করেছি এবং একই সমস্যা ছিল। চিত্রটি কমপক্ষে আকার, প্রস্থ বা উচ্চতায় খুব বড় ছিল। অবশেষে আমি সমাধানটি এখানে পেয়েছি। আপনি প্রদর্শন আকার অনুযায়ী বৃহত চিত্র নিচে স্কেল করতে এবং দিক অনুপাতও রাখতে পারেন:

    public Point getDisplaySize(Display display) {
    Point size = new Point();

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2) {
        display.getSize(size);
    } else {
        int width = display.getWidth();
        int height = display.getHeight();
        size = new Point(width, height);
    }

    return size;
}

এবং পিকাসোর দ্বারা চিত্র লোড করার জন্য এই পদ্ধতিটি ব্যবহার করুন:

    final Point displySize = getDisplaySize(getWindowManager().getDefaultDisplay());
        final int size = (int) Math.ceil(Math.sqrt(displySize.x * displySize.y));
        Picasso.with(this)
                .load(urlSource)
                .resize(size, size)
                .centerInside()
                .into(imageViewd);

আরও ভাল পারফরম্যান্সের জন্য আপনি চিত্রটি পুরো চিত্র নয়, প্রদর্শন পর্দার প্রস্থ এবং উচ্চতা অনুসারে চিত্রটি ডাউনলোড করতে পারেন:

    public String reviseImageUrl(final Integer displayWidth,     final Integer displayHeight,
        final String originalImageUrl) {
    final String revisedImageUrl;

    if (displayWidth == null && displayHeight == null) {
        revisedImageUrl = originalImageUrl;
    } else {
        final Uri.Builder uriBuilder = Uri.parse(originalImageUrl).buildUpon();

        if (displayWidth != null && displayWidth > 0) {
            uriBuilder.appendQueryParameter(QUERY_KEY_DISPLAY_WIDTH, String.valueOf(displayWidth));
        }

        if (displayHeight != null && displayHeight > 0) {
            uriBuilder.appendQueryParameter(QUERY_KEY_DISPLAY_HEIGHT, String.valueOf(displayHeight));
        }

        revisedImageUrl = uriBuilder.toString();
    }

    return revisedImageUrl;
}

    final String newImageUlr = reviseImageUrl(displySize.x, displySize.y, urlSource);

এবং তারপর:

    Picasso.with(this)
                .load(newImageUlr)
                .resize(size, size)
                .centerInside()
                .into(imageViewd);

সম্পাদনা: getDisplaySize ()

display.getWidth()/getHeight()অবচয় করা হয়। পরিবর্তে Displayব্যবহার DisplayMetrics

public Point getDisplaySize(DisplayMetrics displayMetrics) {
        int width = displayMetrics.widthPixels;
        int height = displayMetrics.heightPixels;
        return new Point(width, height);
}

6

BitmapRegionDecoder কৌতুক করে

আপনি ওভাররাইড করতে পারেন onDraw(Canvas canvas), একটি নতুন থ্রেড শুরু করতে এবং ব্যবহারকারীর জন্য দৃশ্যমান অঞ্চলটি ডিকোড করতে পারেন।


5

লার্চোর নির্দেশ অনুসারে, এপিআই স্তর 10 থেকে শুরু করে, আপনি BitmapRegionDecoderকোনও চিত্র থেকে নির্দিষ্ট অঞ্চলগুলি লোড করতে ব্যবহার করতে পারেন এবং এটির সাহায্যে, কেবল প্রয়োজনীয় অঞ্চলগুলিকে মেমরির মধ্যে বরাদ্দ করে আপনি উচ্চ রেজোলিউশনে একটি বৃহত চিত্র প্রদর্শন করতে পারেন। আমি সম্প্রতি একটি লিব তৈরি করেছি যা স্পর্শ অঙ্গভঙ্গি হ্যান্ডলিং সহ বৃহত চিত্রগুলির ভিজ্যুয়ালাইজেশন সরবরাহ করে। উত্স কোড এবং নমুনা এখানে উপলব্ধ


3

স্তর দেখুন

আপনি নিম্নলিখিত কোড সহ রানটাইম এ পৃথক দেখার জন্য হার্ডওয়্যার ত্বরণ অক্ষম করতে পারেন:

myView.setLayerType (View.LAYER_TYPE_SOFTWARE, নাল);


3

আমি একই সমস্যার মধ্যে দিয়ে দৌড়েছি, এখানেই আমার সমাধান। অ্যান্ড্রয়েড স্ক্রিনের প্রস্থের মতো চিত্রের প্রস্থকে সেট করুন এবং তারপরে উচ্চতাটি স্কেল করে

Bitmap myBitmap = BitmapFactory.decodeFile(image.getAbsolutePath());
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;
Log.e("Screen width ", " "+width);
Log.e("Screen height ", " "+height);
Log.e("img width ", " "+myBitmap.getWidth());
Log.e("img height ", " "+myBitmap.getHeight());
float scaleHt =(float) width/myBitmap.getWidth();
Log.e("Scaled percent ", " "+scaleHt);
Bitmap scaled = Bitmap.createScaledBitmap(myBitmap, width, (int)(myBitmap.getWidth()*scaleHt), true);
myImage.setImageBitmap(scaled);

এটি কোনও আকারের অ্যান্ড্রয়েড স্ক্রিনের জন্য ভাল। যদি তোমার জন্য এটি কাজ করে, তাহলে আমাকে জানাও.


2

চিত্র স্কেল ডাউন:

BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;

// Set height and width in options, does not return an image and no resource taken
BitmapFactory.decodeStream(imagefile, null, options);

int pow = 0;
while (options.outHeight >> pow > reqHeight || options.outWidth >> pow > reqWidth)
    pow += 1;
options.inSampleSize = 1 << pow; 
options.inJustDecodeBounds = false;
image = BitmapFactory.decodeStream(imagefile, null, options);

চিত্রটি রেকহাইট এবং রেকউইথের আকারে ছোট করা হবে। আমি যেমন বুঝতে পারি স্যাম্পল সাইজটি কেবলমাত্র 2 টি মানের একটি শক্তি গ্রহণ করে।


কীভাবে রেক হাইট এবং রেকউইথ জানবেন? মানে আমরা কি স্থির মানের সাথে এটি ঠিক করতে হবে? বা আমরা কি এই আর্ট ডিভাইসগুলি পরিবর্তন করতে পারি?
প্রশান্ত দেববাদ্বর

2

ইমেজভিউতে সরাসরি লোড করার পরিবর্তে গ্লাইড লাইব্রেরি ব্যবহার করুন

গ্লাইড: https://github.com/bumptech/glide

Glide.with(this).load(Uri.parse(filelocation))).into(img_selectPassportPic);

2
পিকাসোর পরিবর্তে গ্লাইড ব্যবহার সাহায্য করেছে। গ্লাইড মনে হয় ডিফল্টরূপে এই জাতীয় সমস্যাগুলি পরিচালনা করে
জনি পাঁচ

1

আমি উপরের সমস্ত সমাধানগুলি চেষ্টা করেছি, একের পর এক, বেশ কয়েক ঘন্টা ধরে, এবং কোনওটিই কাজ করে বলে মনে হয়নি! অবশেষে, আমি অ্যান্ড্রয়েডের ক্যামেরায় চিত্রগুলি ক্যাপচার এবং সেগুলি প্রদর্শন সম্পর্কিত কোনও সরকারী উদাহরণ অনুসন্ধান করার চেষ্টা করেছি। সরকারী উদাহরণ ( এখানে ), অবশেষে আমাকে কাজ করার একমাত্র পদ্ধতি দিয়েছে। নীচে আমি সেই উদাহরণটি অ্যাপটিতে আমি যে সমাধানটি পেয়েছি তা উপস্থাপন করছি:

public void setThumbnailImageAndSave(final ImageView imgView, File imgFile) {

            /* There isn't enough memory to open up more than a couple camera photos */
    /* So pre-scale the target bitmap into which the file is decoded */

    /* Get the size of the ImageView */
    int targetW = imgView.getWidth();
    int targetH = imgView.getHeight();

    /* Get the size of the image */
    BitmapFactory.Options bmOptions = new BitmapFactory.Options();
    bmOptions.inJustDecodeBounds = true;
    BitmapFactory.decodeFile(imgFile.getAbsolutePath(), bmOptions);
    int photoW = bmOptions.outWidth;
    int photoH = bmOptions.outHeight;

    /* Figure out which way needs to be reduced less */
    int scaleFactor = 1;
    if ((targetW > 0) || (targetH > 0)) {
        scaleFactor = Math.min(photoW/targetW, photoH/targetH);
    }

    /* Set bitmap options to scale the image decode target */
    bmOptions.inJustDecodeBounds = false;
    bmOptions.inSampleSize = scaleFactor;
    bmOptions.inPurgeable = true;

    /* Decode the JPEG file into a Bitmap */
    Bitmap bitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath(), bmOptions);

    /* Associate the Bitmap to the ImageView */
    imgView.setImageBitmap(bitmap);
    imgView.setVisibility(View.VISIBLE);
}

0

যারা ছোট আকারের চিত্রগুলি রাখতে চান তাদের জন্য দ্রষ্টব্য:

Pilot_51 এর সমাধান (আপনার চিত্রে চলন্ত drawable-nodpiফোল্ডার) কাজ করে, কিন্তু অন্য সমস্যা আছে: এটা ইমেজ তোলে খুবই ছোট পর্দায় যদি না ইমেজ একটি খুব বড় (2000 এক্স 3800 মত) হইয়া পর্দায় রেজল্যুশন পুনরায় আকার হয় - তারপর, এটা আপনার অ্যাপ্লিকেশন ভারী করে তোলে ।

সমাধান : আপনার ইমেজ ফাইলগুলিকে এতে রেখে দিন drawable-hdpi- এটি আমার জন্য একটি কবজির মতো কাজ করেছে।


1
আপনি কেবল আপনার চিত্র ঘনত্ব সমস্যাটি মাস্কিং করছেন। নিম্ন ঘনত্ব সহ হার্ডওয়্যারগুলিতে আপনার চিত্রগুলি আরও বড় দেখাবে।
রুপস

আমি এটাও ভাবি না যে পাইলট_৫১ এর সমাধানের কোনও সমস্যা রয়েছে, আপনার প্রয়োজন অনুযায়ী আপনার যথাযথ চিত্র আকার ব্যবহার করা উচিত
নীলবজা

0

সঠিক অঙ্কনযোগ্য সাবফোল্ডার ব্যবহার করে এটি আমার জন্য সমাধান হয়েছে। আমার সমাধানটি ছিল আমার সম্পূর্ণ রেজোলিউশন চিত্র (1920x1200) অঙ্কনযোগ্য-এক্সএইচডিপি ফোল্ডারে অঙ্কনযোগ্য ফোল্ডারের পরিবর্তে ।

আমি অঙ্কনযোগ্য-এইচডিপিআই ফোল্ডারে একটি ছোট আকারের চিত্র (1280x800 )ও রেখেছি

এই দুটি রেজোলিউশন 2013 এবং 2012 নেক্সাস 7 ট্যাবলেটগুলিতে আমি প্রোগ্রাম করছি match আমি অন্যান্য কয়েকটি ট্যাবলেটগুলিতে সমাধানটিও পরীক্ষা করেছিলাম।


0
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {

    super.onActivityResult(requestCode, resultCode, data);
    ///*
    if (requestCode == PICK_FROM_FILE && resultCode == RESULT_OK && null != data){



        uri = data.getData();

        String[] prjection ={MediaStore.Images.Media.DATA};

        Cursor cursor = getContentResolver().query(uri,prjection,null,null,null);

        cursor.moveToFirst();

        int columnIndex = cursor.getColumnIndex(prjection[0]);

        ImagePath = cursor.getString(columnIndex);

        cursor.close();

        FixBitmap = BitmapFactory.decodeFile(ImagePath);

        ShowSelectedImage = (ImageView)findViewById(R.id.imageView);

      //  FixBitmap = new BitmapDrawable(ImagePath);
        int nh = (int) ( FixBitmap.getHeight() * (512.0 / FixBitmap.getWidth()) );
        FixBitmap = Bitmap.createScaledBitmap(FixBitmap, 512, nh, true);

       // ShowSelectedImage.setImageBitmap(BitmapFactory.decodeFile(ImagePath));

        ShowSelectedImage.setImageBitmap(FixBitmap);

    }
}

এই কোড কাজ

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.